Может ли SQL Server возвращать информационное сообщение программе .NET System.Data.SqlClient в контекстах, не содержащих ошибок

Возможно ли с клиентской программой .NET, взаимодействующей с внутренним SQL-сервером с помощью библиотеки System.Data.SqlClient, чтобы сервер отправлял информационное сообщение клиентской программе в контекстах, не связанных с ошибками, и для клиента программа для получения сообщения, которое было отправлено?

        create proc NewFoo            
    @value text,
    @userid text
    as
    begin
     insert foo
     (name, createdby) values (@value, @userid);

     declare @recordcount int
     select @recordcount = count(*) from foo where createdby= @userid;

     if @recordcount = 100
         begin
           -- let user know they've created their 100th record. Woo-hoo!!
         end
   end

    

PS Без использования параметра OUT или параметра RETURN value в объекте команды на стороне клиента.

1 ответ

Вы можете использовать PRINT в своей хранимой процедуре и зафиксировать его в коде, подписавшись на событие InfoMessage в объекте SqlConnection.

В вашем sql просто введите:

          PRINT 'Exceeded max. Intentional'

и в вашем коде возьмите это так:

          using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
        string msg = null;
        connection.InfoMessage += (sender, e) => { msg = e.Message; };
        // execute the procedure
        // check msg
    }
Другие вопросы по тегам