Форум: "Базы";
Текущий архив: 2015.12.27;
Скачать: [xml.tar.bz2];
ВнизКак сообщение RAISERROR из ХП показать пользователю на экране? Найти похожие ветки
← →
vv_fran (2011-05-23 12:09) [0]Как сообщение RAISERROR из ХП показать пользователю на экране? У меня SQL Server, Делфи и UniDac компоненты.
В ХП:
IF (@N IS NULL)
BEGIN
SET @N = 0;
RAISERROR("Такого кода нет!",1,1);
END ELSE BEGIN
......
← →
Ega23 © (2011-05-23 12:33) [1]
try
ADOCommand.Execute;
except on E: Exception do
ShowMessage(E.Message);
end;
?
← →
OW © (2011-05-23 13:04) [2]будут критиковать сейчас, и правильно сделают. Жду.
(юзаю не комманд, а квери. Пусть бульдозеро-экскаватор, но все же и бульдозер и экскаватор
и привык :) )
далее пишу все свои процедуры как 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);
← →
Ega23 © (2011-05-23 13:30) [3]
> будут критиковать сейчас, и правильно сделают. Жду.
raiserror хорош для жесткого отката транзакции, как внутри ХП, так и на клиенте.
В остальных случаях лично я по методу Влада пользовался.
← →
Polevi © (2011-05-25 17:27) [4]sql server начиная с 2005 версии поддерживает конструкции BEGIN TRY, BEGIN CATCH, и ф-ии ERROR_NUMBER(), ERROR_MESSAGE(), etc
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2015.12.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c