Есть процедура на MS SQL
------------------------------
CREATE PROCEDURE AA @A INT OUT
AS
RAISERROR ('aaa !',1,1)
SELECT @A=1000
SELECT @A as A
RAISERROR ('bbb !',1,1)
RETURN 1
------------------------------
Выполняю ее через провайдер ODBC (MSDASQL) ADODB.Command, вычитываю все recordtset-ы (Recordset.NextRecordset). Сообщения принимаю через событие ADODB.Connection.InfoMessage
В результате получаю все, кроме RAISERROR ('bbb !',1,1).
Если закомментировать SELECT @A as A, либо вставить любой select после последнего Raiserror, то все ОК.