需要得到SQL Server "打印"值

本文关键字:quot 打印 Server SQL | 更新日期: 2023-09-27 17:52:52

我有一个SP打印结果到SQL Server,但我需要在 c# 中使用该值。

PRINT更改为SELECT现在不是一个选项。我试图SqlCommand.ExecuteScalar(),但没有工作。

有人知道是否有可能将SP中的PRINT命令的值重定向到 c# 吗?

例子:

CREATE PROCEDURE doXYZ
AS
BEGIN
   PRINT 'XYZ'
END

现在在 c# 我需要得到值'XYZ'....什么好主意吗?

需要得到SQL Server "打印"值

您可以使用SqlConnection.InfoMessage事件

可以这样使用SqlConnection.InfoMessage事件:

using System.Data;
using System.Data.SqlClient;
namespace foo
{
    class bar
    {
        static public void ExecuteStoredProc()
        {
            var connectionString = "Data Source=.;Integrated Security=True;Pooling=False;Initial Catalog=YourDatabaseName";
            using (var connection = new SqlConnection(connectionString))
            using (var command = new SqlCommand("dbo.YourStoredProcedure", connection))
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@YourParameterName", "YourParameterValue");
                connection.Open();
                // wire up an event handler to the connection.InfoMessage event
                connection.InfoMessage += connection_InfoMessage;
                var result = command.ExecuteNonQuery();             
                connection.Close();
            }
        }
        static void connection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
        {
            // this gets the print statements (maybe the error statements?)
            var outputFromStoredProcedure = e.Message;              
        }
    }
}