2014-02-05 43 views
1

出於某種原因,我不得不從函數執行存儲過程,因爲它是不可能的,我想作爲Stackoverflow :: Execute Stored Procedure from a Function而從函數執行存儲過程中如何抑制由SQLCMD返回的消息?

相反OSQL解釋,我試過SQLCMD。它的工作,但我得到多個空行,用------一排一排與NULL值。

此功能不能更改爲存儲過程。

有什麼辦法可以抑制這些消息和不需要的行嗎?

或者是否有任何替代執行存儲過程內的函數?

enter image description here

SQL:

master..xp_cmdshell 'sqlcmd -COM252\INSTANCE2008 -E -q 
     "SET NOCOUNT ON; 
     exec MyDatabaseName..storedProcName ''param1'', ''param2'' "' 

我甚至嘗試推臨時表可惜再次,臨時表不能在功能訪問。

+0

恕我直言,你需要將該邏輯從存儲過程移動到其他東西。在函數中執行任何操作,然後可以從函數或存儲過程調用該函數。 –

+0

'sqlcmd> null ....''是否有訣竅? –

+0

@YuriyGalanter:返回單行'null' – hsuk

回答

0

還沒有嘗試過,但這個怎麼樣?

DECLARE @dummy TABLE(f1 varchar(max)); 

INSERT @dummy (f1) 
EXEC master..xp_cmdshell 'sqlcmd -COM252\INSTANCE2008 -E -q 
     "SET NOCOUNT ON; 
     exec MyDatabaseName..storedProcName ''param1'', ''param2'' "' 
+0

事實上,我將在SQL函數上執行此操作。如果我嘗試你的解決方案,這個錯誤'在一個函數中使用副作用運算符'INSERT EXEC'將被觸發。 – hsuk

相關問題