无法在存储过程中以SQLCMD模式执行脚本

时间:2014-06-14 17:16:05

标签: sql sql-server

我尝试使用.sql模式在存储过程中调用sqlcmd文件。

要求是将.sql文件作为参数值传递给我能够实现的cmd脚本,这里的代码工作正常:

declare @x sysname
set @x = 'C:\Users\testuser\Desktop\testing.sql'

:OUT $(TEMP)\GetServerName1.sql
PRINT ':SETVAR FilePath'+ ' ' + @x
GO
:OUT stdout

:r $(TEMP)\GetServerName1.sql
GO
:r $(FilePath)

当我尝试将此代码包装在存储过程中时,它会导致"致命错误"。

当我在没有将其包装在存储过程中的情况下运行它时,它正在执行其工作而没有错误。

当我查看存储过程时,我找到了这段代码:

ALTER proc [dbo].[testing]
as
   declare @x sysname
   set @x = 'C:\Users\testuser\Desktop\testing.sql'

   PRINT ':SETVAR FilePath'+ ' ' + @x

似乎sqlcmd代码会自动消失。我不知道为什么会这样。

任何人都可以帮我告诉我如何将上述代码包装在存储过程中。

谢谢Saurav

1 个答案:

答案 0 :(得分:1)

您的语句由GO关键字终止,该关键字用作批处理终止符。您不能在存储过程中使用GO。有关处理此问题的方法,请参阅this主题。也许尝试在没有GO的情况下存储程序?

相关问题