使用SQLcmd将参数传递给过程

时间:2015-07-14 06:52:09

标签: sql-server variables stored-procedures

我使用这个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'

附近的语法不正确

将变量传递给存储过程的正确方法是什么?

1 个答案:

答案 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脚本中的外部可变数据有效,而对存储过程无效。