powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как достать значение обновляемой переменной в процедуре UPDATE
6 сообщений из 6, страница 1 из 1
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092441
Volk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!

сразу пример:

create procedure MAIN_UPDATE (
iID_MAIN integer,
iDOM1 varchar(15),
as
declare variable OLD_DOM1 varchar(15);
BEGIN

ID_HISTORY = gen_id(gen_id_history,1);

-----определение измененных параметров и занесение их в соотв переменые-----
if (OLD.DOM1<>NEW.DOM1) then
OLD_DOM1 = OLD.OLDNUM;



----Реальное обновление Main- таблицы.--------------
UPDATE MAIN
SET
DOM1 = :iDOM1,
WHERE ID = :ID_MAIN;

-------Вставка истории в Main_History------------
INSERT INTO MAIN_HISTORY (
ID,
ID_MAIN,
CHANGE_BY_USER,
DOM1

)
VALUES (
:iID_HISTORY,
:iID_MAIN,
USER,
OLD_DOM1

END

Переменные OLD.DOM и NEW.DOM работают только в триггерах. Переменная NEW это не проблема. Она равна передаваемому параметру :iDOM1;

А где взять OLD.? Через Select не получается. Его нельзя применять в условии IF.
Вообщем помогите сравнить OLD и NEW.
...
Рейтинг: 0 / 0
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092482
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переменные NEW - это входные параметры процедуры, а переменные OLD нужно получить запросом перед выполнением UPDATE. А что тут непонятного, собственно???
...
Рейтинг: 0 / 0
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092881
Volk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, вот, что-то не получается. Подскажи PLS.

Самая проблема достать значения запросом в процедуре UPDATE.
может так?:

OLD_DOM1 = select DISTINCT DOM1 from TABLE where TABLE.ID = ID_TABLE.
IF OLD_DOM<>NEW_DOM then.....

но это чушь.
Короче, как поместить результат Select в переменную? и чтоб на нее потом if не ругался.

А может можно сразу получить всю запись и положить её в переменную OLD а дальше обращаться к ней как OLD.ID, OLD.DOM1...
Имя OLD взято для лучшего понимания.
...
Рейтинг: 0 / 0
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092883
Volk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поместить результат select в переменную:

Select TABLE.DOM1 from Table where TABLE.ID = :ID_Table INTO Переменная.

Вот эту конструкцию я и хотел узнать. Я забыл про INTO!.

Но это же помещается каждое поле в переменную и придется делать кучу запросов, чтобы выбрать все поля из одной и той же записи. Нельзя ли сделать поместить запис в переменную, а потом доступаться до каждого поля этой записи типа Переменная.ID, Переменная.DOM1...
...
Рейтинг: 0 / 0
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092886
Volk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...INTO переменная1, переменная2.....

Спасибо, всем. Скоро опять столкнусь с какой нибудь бородой.
...
Рейтинг: 0 / 0
Как достать значение обновляемой переменной в процедуре UPDATE
    #32092906
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цирк! Сам с собои разговариваешь? :-)))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как достать значение обновляемой переменной в процедуре UPDATE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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