Может ли 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
}