2013-03-08 103 views
4

讓說我有這樣一個存儲過程:如何從SQL Server存儲過程捕獲打印消息?

begin try drop procedure test_print end try begin catch end catch; 
go 
create procedure test_print 
as 
begin 
print 'Hello' 
print 'World'; 
end 
go 

exec test_print 

我怎樣才能捕捉到存儲過程test_print打印信息,並保存到一個變量?

謝謝。

+0

看看這個以前的答案http://stackoverflow.com/questions/1589466/sql-server-execute-stored-procedure-with-output-parameter - 基本上你需要使用OUTPUT clasue。 – twoleggedhorse 2013-03-08 10:57:03

+0

我知道OUTPUT子句。我的情況是我不能修改存儲過程,我只能調用它。存儲過程在其中使用了很多PRINT語句。我如何從PRINT語句中獲得這些字符串? – 2013-03-08 11:00:20

+1

我強烈反對將此問題標記爲重複,原因是所提及的重複問題未回答。所提到的問題在.NET中給出了一個解決方案,而不是sql。這個問題可能沒有答案,但這是一個有效的問題,應該站在它自己的立場上。 – hktegner 2017-07-17 10:47:32

回答

4

你不能在T-SQL中。信息輸出總是發送給客戶端。所以你必須成爲客戶來捕捉它。一個簡單的解決方法是從SQLCLR調用該過程。然後,您可以簡單地連接InfoMessage事件並獲取Calee輸出。

+0

+1,只是從.NET的角度添加,這裏是關於捕獲輸出的prev問題:http://stackoverflow.com/questions/1880471/capture-stored-procedure-print-output-in-net – AdaTheDev 2013-03-08 11:23:34

相關問題