2013-05-28 38 views
0

我試圖通過使用SQLCMD和用戶定義變量通過批處理文件觸發SP來使存儲過程工作。我已經可以確認我的存儲過程有效,因爲我使用硬編碼變量以這種方式對其進行了測試。 作爲參考,這是批處理文件代碼:對SQLCMD使用CAST/CONVERT難以分配存儲過程變量

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

你可以接受他們來的數據類型的變量,然後在stroede proc中轉換/轉換它們,這是可行的。 – Nishad

+0

@ Nishad - 謝謝。事實證明,我需要解決這個問題有兩個部分:一個是在存儲過程中進行轉換,另一個是需要在sqlcmd查詢中修改我的變量的語法。 – QuizzicalFerret

回答

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告訴我,無論我輸入什麼內容,我都會得到空白,所以我開始使用查詢參數格式進行遊戲,並發現這很有效。