我试图通过使用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转换变量?或者当我应该使用不同的方法时,我是否会以错误的方式解决这个问题?
答案 0 :(得分:0)
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告诉我,无论我输入什么,我都会得到空白,所以我开始使用查询参数格式,发现这很有效。