Pet*_*ter 94 .net c# stored-procedures
是否可以从.NET中的TSQL存储过程捕获打印输出?
我有很多使用print作为errorMessaging方法的遗留过程.例如,是否可以从以下PROC访问outprint'word'?
-- The PROC
CREATE PROC usp_PrintWord AS
PRINT 'word'
Run Code Online (Sandbox Code Playgroud)
Ada*_*Dev 141
您可以通过向连接上的InfoMessage事件添加事件处理程序来完成此操作.
myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);
void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);
}
Run Code Online (Sandbox Code Playgroud)
如果要在LinqPad的输出控制台中捕获打印输出,这非常方便:
SqlConnection conn = new SqlConnection(ConnectionString);
//anonymous function to dump print statements to output console
conn.InfoMessage += (object obj, SqlInfoMessageEventArgs e)=>{
e.Message.Dump();
};
Run Code Online (Sandbox Code Playgroud)
要将输出放入变量中:
string printOutput = "";
using (var conn = new SqlConnection(...))
{
// handle this event to receive the print output
conn.InfoMessage += (object obj, SqlInfoMessageEventArgs e) => {
printOutput += e.Message;
};
//
// execute command, etc. here
//
}
Console.Write(printOutput);
Run Code Online (Sandbox Code Playgroud)