|
Как достать значение обновляемой переменной в процедуре UPDATE
|
|||
---|---|---|---|
#18+
Привет всем! сразу пример: 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2003, 12:40 |
|
Как достать значение обновляемой переменной в процедуре UPDATE
|
|||
---|---|---|---|
#18+
Переменные NEW - это входные параметры процедуры, а переменные OLD нужно получить запросом перед выполнением UPDATE. А что тут непонятного, собственно??? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2003, 13:31 |
|
Как достать значение обновляемой переменной в процедуре UPDATE
|
|||
---|---|---|---|
#18+
Да, вот, что-то не получается. Подскажи 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 взято для лучшего понимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2003, 08:31 |
|
Как достать значение обновляемой переменной в процедуре UPDATE
|
|||
---|---|---|---|
#18+
поместить результат select в переменную: Select TABLE.DOM1 from Table where TABLE.ID = :ID_Table INTO Переменная. Вот эту конструкцию я и хотел узнать. Я забыл про INTO!. Но это же помещается каждое поле в переменную и придется делать кучу запросов, чтобы выбрать все поля из одной и той же записи. Нельзя ли сделать поместить запис в переменную, а потом доступаться до каждого поля этой записи типа Переменная.ID, Переменная.DOM1... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2003, 09:14 |
|
Как достать значение обновляемой переменной в процедуре UPDATE
|
|||
---|---|---|---|
#18+
...INTO переменная1, переменная2..... Спасибо, всем. Скоро опять столкнусь с какой нибудь бородой. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2003, 09:38 |
|
|
start [/forum/moderation_log.php?user_name=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0+%D0%BC%D0%BE%D0%B4%D0%B5%D0%BC%D0%BE%D0%B2.]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 189ms |
total: | 347ms |
0 / 0 |