难以将CAST / CONVERT与SQLCMD一起使用以分配存储过程变量

时间:2013-05-28 01:51:46

标签: sql-server-2008 casting sqlcmd

我试图通过使用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转换变量?或者当我应该使用不同的方法时,我是否会以错误的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

<\ n> @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告诉我,无论我输入什么,我都会得到空白,所以我开始使用查询参数格式,发现这很有效。