我使用这个SQL命令:
sqlcmd -v first_date="30/09/2015" last_date="15/09/2016"
SQL执行:
DECLARE @return_value int
EXEC @return_value = [dbo].[_testProcedure]
SELECT 'Return Value' = @return_value
GO
PRINT 'Finally'
GO
我想将这些参数传递给存储过程:
ALTER PROCEDURE [dbo].[_testProcedure]
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @F_FIRST_DATE_DT VARCHAR(50)
DECLARE @F_LAST_DATE_DT VARCHAR(50)
SET @F_FIRST_DATE_DT = N'$(first_date)'
SET @F_LAST_DATE_DT = N'$(last_date)'
但它给我一个错误:
'first_date'
附近的语法不正确
将变量传递给存储过程的正确方法是什么?
答案 0 :(得分:2)
如果您要声明@F_FIRST_DATE_DT
和@F_LAST_DATE_DT
作为存储过程的输入参数 - 您可以将其称为
EXEC @return_value = [dbo].[_testProcedure]
@F_FIRST_DATE_DT = $(first_date),
@F_LAST_DATE_DT = $(last_date)
在您的脚本中,您正在使用sqlcmd运行。
您收到错误,因为$()
语法仅对sqlcmd脚本中的外部可变数据有效,而对存储过程无效。