geo*_*170 3 sql-server-2005 sql-server
环境sql server 2005 sp3
我有一个以 INT 作为输入的存储过程。我想在调用存储过程期间将 CHAR 转换为 INT。看来我不能那样做。我在@foo 之前收到语法错误。我没有看到它请有人帮我找到它。非常感谢。
CREATE PROCEDURE testme
@test AS INT
AS
BEGIN
SELECT @TEST
END
DECLARE @foo AS CHAR(6)
set @foo = '11test'
EXEC testMe @test = CAST(Substring(@foo,1,2) as int)
Run Code Online (Sandbox Code Playgroud)
SQL*_*tar 10
为什么不在 SET @foo 时执行 CAST 呢?
SET @foo = CAST(Substring('11test',1,2) as int)
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用第二个变量并执行以下操作:
SET @foo1 = '11test'
SET @foo2 = CAST(Substring(@foo1,1,2) as int)
Run Code Online (Sandbox Code Playgroud)
然后只需调用 proc:
EXEC testMe @test = @foo2
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 10
SQL Rockstar 的答案是如何修复它:我会添加一个解释。
存储过程参数可以是常量或变量:不是表达式。CAST 是一个表达式。(这与可以接受表达式的 udf 参数不同)
... @parameter = ] { 值 | @变量 [ 输出 ] | [ 默认 ] }
| 归档时间: |
|
| 查看次数: |
5941 次 |
| 最近记录: |