Конференция "Базы" » Возможно ли выгрузить все сообщения об ошибках возвращаемых ХП на
 
  • Amir (07.03.12 14:18) [0]
    DELPHI7, ADO, MSSQL2000

    Имеется хранимая процедура в
    которой выполняется циклическая обработка данных

    Declare crxxx cursor
    ....
    fetch next xx, xx
    while @@FETCH_STATUS = 0
    ....
    if условие 1
    RAISERROR ('Ошибка', 16, 1)

    fetch next xx, xx
    end

    Вопрос :
    Как выгрузить все сообщения об ошибках на клиент ?
    если использовать код:

    var
    list : TStrings;
    i: integer;
    begin
    list := TStringList.Create;
    with ADOcommand do
    try
    commandtext = 'EXEC ХП'
    execute
    except
    for i := 0 to ADOConnection.Errors.Count - 1 do
    list.Add (ADOConnection.Errors[i].Description);
    end

    end;

    возвращается только первый RAISERROR, а их может быть несколько

    ADOCommand.ExecuteOptions := [eoAsyncExecute] - на клиент возвращается 0 строк
    ADOCommand.ExecuteOptions := [eoAsyncFetch] - на клиент возвращается 1 строка
  • sniknik © (07.03.12 14:43) [1]
    попробуй поставь серверный курсор... не помню где, давно занимался. или поищи старое, приводил тут код как то. способов больше чем 1.
  • Amir (07.03.12 16:02) [2]
    пробовал ставить в  ADOConnection серверый курсор - не помогло

    нашел такой вот код:


    procedure TForm1.Button2Click(Sender: TObject);
    var
    i: Integer;
    ra: OleVariant;
    rs: _Recordset;
    str: String;
    begin
    str :=
      "print ""proba pera1"""#10#13+
      "print ""proba pera2"""#10#13+
      "print ""proba pera3""";
    rs := ADOConnection1.Execute(str);
    repeat
      for i:=0 to ADOConnection1.Errors.Count-1 do
        ShowMessage(ADOConnection1.Errors.Item[i].Description);
      if rs <> nil then
        rs := rs.NextRecordset(ra);
    until (rs = nil);
    end;



    - также выводится 1 сообщение, а при запуске ХП из Query Analizer их 4,

    а  как отловить сообщения со степенью серьезности 1 ? :
      RAISERROR ('Ошибка', 1, 1)
  • sniknik © (07.03.12 16:31) [3]
    > нашел такой вот код:
    а полностью ветку прочитать и осмыслить?
    http://www.delphimaster.net/view/3-1106639334

    там есть, что и куда.
 
Конференция "Базы" » Возможно ли выгрузить все сообщения об ошибках возвращаемых ХП на
Есть новые Нет новых   [134431   +10][b:0][p:0.001]