Dan*_*ite 1 sql t-sql sql-server
为什么我不能这样做?
EXEC mySproc NCHAR(0xA5)
Run Code Online (Sandbox Code Playgroud)
我明白了
'0xa5'附近的语法不正确.
但是,我可以做到这一点
DECLARE @foo NCHAR
SET @foo = NCHAR(0xA5)
EXEC mySproc @foo
Run Code Online (Sandbox Code Playgroud)
甚至这个
SELECT NCHAR(0xA5)
Run Code Online (Sandbox Code Playgroud)
有趣的是SQL服务器如何选择评估表达式.有什么想法吗?
Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH RECOMPILE ]
}
[;]
Run Code Online (Sandbox Code Playgroud)
哪里有价值
是要传递给模块或传递命令的参数值.如果未指定参数名称,则必须按模块中定义的顺序提供参数值.
对链接服务器执行传递命令时,参数值的顺序取决于链接服务器的OLE DB提供程序.大多数OLE DB提供程序从左到右将值绑定到参数.
如果参数的值是对象名,字符串或由数据库名称或模式名称限定,则必须将整个名称括在单引号中.如果参数的值是关键字,则关键字必须用双引号括起来.
如果在模块中定义了默认值,则用户可以在不指定参数的情况下执行模块.
默认值也可以为NULL.通常,模块定义指定参数值为NULL时应采取的操作.
从而
您应该首先执行所有计算,将结果放入变量,然后将变量传递给SP调用
归档时间: |
|
查看次数: |
161 次 |
最近记录: |