我想從SQL Server表中導出一些數據和固定字符到文本文件。我需要將大量這樣的行導出到文本文件,所以我試圖通過將DECLARing和大量命令變量放在一行中來減少代碼的大小。這就是我要做的:xp_cmdshell和SQL服務器觸發器中的回顯
這工作得很好:
DECLARE @ClientID varchar(50)
SET @ClientID = (select ClientID from inserted)
DECLARE @CommandL1 varchar(512)
SET @CommandL1 = 'echo U1 '[email protected]+'> c:\temp\file.txt'
exec master..xp_cmdshell @CommandL1
相同的指令同上,但寫成一行(不聲明和SET,首選的方式去減少代碼)失敗(我得到的錯誤 - 附近有語法錯誤(第一個)「+」):
exec master..xp_cmdshell 'echo U1 '[email protected]+'> c:\temp\file.txt' --ERROR
我有很多類似上面的代碼,所以想節約線路。另外,我想知道如何解決這個問題。感謝您提前提供任何幫助(我嘗試使用^作爲轉義字符,但沒有成功)。如何更改第二行(如上所示,使用--ERROR),以便它正常工作?
JD
什麼是ClientID設置?另外,我想你在第一個語句中有一個額外的'@ CommandL1 – scsimon
'的設置,我將ClientID設置爲SET @ClientID =(從插入中選擇ClientID);這部分工作正常,並且在表插入/更新之後,使用第一種方法將正確的ClientID導出到文本文件。你對額外的事情絕對正確「 - 我現在編輯了它。感謝您的回覆。 – Jay
所以'ClientID'是一個'INTEGER'或者它是'VARCHAR'?你確定在你的子選擇'(選擇插入的ClientID)'中只返回1行(記錄/值)嗎? – scsimon