开发者

Need to get the SQL Server "PRINT" value in C#

I have a SP that Prints the results into SQL Server, but I need to use that value in C#.

Changing the PRINT to SELECT is not an option right now. I tried to SqlCommand.E开发者_如何学PythonxecuteScalar() but that didn't work.

Does anybody know if it is possible to get the value of PRINT command in SP redirected to C#?

EXAMPLE:

CREATE PROCEDURE doXYZ
AS
BEGIN
   PRINT 'XYZ'
END

Now in C# I need to get the value 'XYZ'.... any ideas?


You can use the SqlConnection.InfoMessage event.


You can use the SqlConnection.InfoMessage event like so:

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;              
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜