powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE и raiserror
11 сообщений из 11, страница 1 из 1
ASE и raiserror
    #33864255
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос такой.
Можно ли сделать так.
В процедуре обработка данных. В цикле.
Для какойто записи срабатывает триггер в базе. Получить сообщение raiserror (сообщение ошибки, которое было сгенерировано) и продолжить выполнение для последующих записей?
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864278
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте
declare @message varchar(255)
select @message='сообщение'
print @message
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864395
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЭЭ...
:)
Это все понятно. Вопрос же был в другом - как получить сообщение, которое выдал триггер? Это раз
И как после этого рэйзеррора продолжить работу дальше. Это два :)
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864479
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. получить текст
select description from master..sysmessages where error=...
но без подстановки параметров.
подругому нельзя.

2. если записи вставляются по одной - никаких проблем продолжить.
иначе никак.
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864565
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот примерно код - просто так накидал чтобы объяснить

create table dbo.test_table(pkey int not null,value varchar(10) null)

insert into dbo.test_table
values(1,'')
insert into dbo.test_table
values(2,'')
insert into dbo.test_table
values(3,'')

create trigger dbo.test_tablee_trg on dbo.test_table for update as begin
declare _cur cursor for select i.pkey from inserted i
declare @c_pkey int
open _cur
fetch _cur into @c_pkey
while (@@sqlstatus=0) begin
if @c_pkey=2 begin
rollback trigger with raiserror 20001 'My msg!'
return
end
fetch _cur into @c_pkey
end
close _cur
deallocate cursor _cur

end

create procedure dbo.test_proc
as
begin
declare _cur cursor for select i.pkey from dbo.test_table i
declare @c_pkey int,@msg varchar(10)
open _cur
fetch _cur into @c_pkey
while (@@sqlstatus=0) begin
update dbo.test_table set value =str(@c_pkey) where pkey=@c_pkey
select @msg=str(@c_pkey)
print @msg
fetch _cur into @c_pkey
end
close _cur
deallocate cursor _cur

end

exec dbo.test_proc
тут при вызове в принте получаем
1
2
3
Все нормально - то есть после ошибки продолжает выполнение, но! после выполнения процедуры пишет что она была выполнена с таким то рэйзеррором. От этого можно избавиться?

И получить сообщение raiserror 20001 'My msg!' - можно?
Очень бы хотелось

select * from dbo.test_table

Тут все корректно - проапдейтило только 1 и 3
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864578
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На красивость кода не претендую. Все время писал на АСА... Теперь вот пытаюсь понять как с АСЕ работать.. Язык как по мне намного беднее :( И жаль что нет ро-левел триггеров....

Если что не так пишу - тыкайте носом :) Буду только благодареен
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864592
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В master..sysmassages как я понял - хранятся системные ошибки. А для user-defined?
Да и хорошо былобы получить то сообщение, которое было сгенерировано.... С уже семи подставленными параметрами.
Неужели нельзя никак?
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864765
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На клиенте можно. внутри базы - нет.
ЗЫ: sysusermessages для user-defined
...
Рейтинг: 0 / 0
ASE и raiserror
    #33864872
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тут по идее как раз внутри базы хотелось бы...
Потому как сообщение для рэйзеррора генерится в триггере и как раз оно интересует.
...
Рейтинг: 0 / 0
ASE и raiserror
    #33865053
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А установить @@sqlstate или @@error можно?
Ну то есть - как поверить что была ошибка чтобы запомнить эту запись..
...
Рейтинг: 0 / 0
ASE и raiserror
    #33865564
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTimВопрос такой.
Можно ли сделать так.
В процедуре обработка данных. В цикле.
Для какойто записи срабатывает триггер в базе. Получить сообщение raiserror (сообщение ошибки, которое было сгенерировано) и продолжить выполнение для последующих записей?

Т.е. на сервере перехватить raiserror и продолжить далее ? Нет, так нельзя.
Это невозможно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE и raiserror
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]