难以在SQLCMD中使用CAST/CONVERT来分配存储过程变量



我试图通过使用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转换变量?还是说我应该用另一种方法,但却用错了方法?

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

最新更新