-
Как сообщение RAISERROR из ХП показать пользователю на экране? У меня SQL Server, Делфи и UniDac компоненты. В ХП:
IF (@N IS NULL) BEGIN SET @N = 0; RAISERROR('Такого кода нет!',1,1); END ELSE BEGIN ......
-
try
ADOCommand.Execute;
except on E: Exception do
ShowMessage(E.Message);
end; ?
-
будут критиковать сейчас, и правильно сделают. Жду. (юзаю не комманд, а квери. Пусть бульдозеро-экскаватор, но все же и бульдозер и экскаватор и привык :) )
далее пишу все свои процедуры как select
IF (@N IS NULL) BEGIN Select -1 as MyRes, 'Такого кода нет' as Becouse return
и в конце select 0 as MyRes, 'ok' as Becouse
потом после вызова любой процедуры (а теперь всегда надо делать Open, а не Exec, т.к. все мои процедуры что-то возвращают) MyRes сравниваем с 0 и показываем/пишем в лог Becouse
Function ExecProc(Q : tADOQuery; Var S : string): integer; begin Q.Open; S := Q.FieldByName('Becouse').AsString; Result := Q.FieldByName('MyRes').AsInteger; end;
qQ.sql.text := 'exec MyProc'; if ExecProc(qQ, sTmp) <> 0 then ShowMessage(sTmp);
-
> будут критиковать сейчас, и правильно сделают. Жду.
raiserror хорош для жесткого отката транзакции, как внутри ХП, так и на клиенте. В остальных случаях лично я по методу Влада пользовался.
-
sql server начиная с 2005 версии поддерживает конструкции BEGIN TRY, BEGIN CATCH, и ф-ии ERROR_NUMBER(), ERROR_MESSAGE(), etc
|