0

我试图通过使用 SQLCMD 的批处理文件触发 SP 来使存储过程工作,并使用用户定义的变量。我已经可以确认我的存储过程有效,因为我使用硬编码变量以这种方式对其进行了测试。作为参考,这是批处理文件代码:

SET /P Param1 = Enter job number here:
SET /P Param2 = Enter number for current status here:

sqlcmd -S DevTest -d test_database -Q "EXEC dbo.JStatUpd @jobNum = Param1, @stat = Param2"

PAUSE

(编辑:为了便于参考,我保留了 sqlcmd 行。)

我的困难在于使用用户定义的变量。具体来说,我在转换用户定义的变量时遇到了问题——我的两个变量都应该是整数。我认识到所有SET变量都会自动以 ; 形式出现nvarchar,但我无法找到将它们转换为int; 每次尝试使用 CAST 或 CONVERT 时都会出错。

我的问题是:是否可以在 SQLCMD 内联查询中使用 CAST 或 CONVERT 转换变量?或者当我应该使用不同的方法时,我是否会以错误的方式来解决这个问题?

4

1 回答 1

0

@Nishad 有正确的想法,但事实证明还需要修复其他问题。为了彻底起见,这是我最终使用的最终批处理文件代码:

SET /P Param1 = Enter job number here:
SET /P Param2 = Enter current status here:

sqlcmd -S DevTest -d test_database -Q "EXEC dbo.JStatUpd @jobNum=N'%Param1%', @stat=%Param2%"

PAUSE

只有使用这种特定的格式,我才能真正让用户输入的值正常工作;@echo 告诉我,无论我输入什么,我都会得到空白,所以我开始使用查询参数格式,发现这行得通。

于 2013-05-30T13:54:47.847 回答