powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача NEW в качестве параметра функциям!
9 сообщений из 9, страница 1 из 1
Передача NEW в качестве параметра функциям!
    #32644803
Black Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!!!!!
Возможно ли из функции триггера вызвать другую функцию и передать ей в качестве параметра поле NEW? Если можно, то как?
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32644931
Black Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот например при попытке выполнить такую функцию
CREATE OR REPLACE FUNCTION trig_pr_accounting() RETURNS TRIGGER AS '
BEGIN
PERFORM dialup_time_acct(NEW,OLD,\'QWERQWER\');
RETURN NEW;
END;
'LANGUAGE 'plpgsql';
пишет
NEW used in query that is not in a rule CONTEXT
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32645551
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dialup_time_acct(NEW,OLD,\'QWERQWER\')
пожалуйста в студию
есть подозрение что ты там используешь что то типа NEW.zzz
на что и ругается

и все сообщение об ошибке плз, а не одну строку.
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32645915
Black Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
centurdialup_time_acct(NEW,OLD,\'QWERQWER\')
пожалуйста в студию
есть подозрение что ты там используешь что то типа NEW.zzz
на что и ругается

и все сообщение об ошибке плз, а не одну строку.

Дык я тут по архивам мэйл листов еще полиазил и обнаружил, что данные типов RECORD и ROW в функцию передать просто не возможно.... посему такой подход просто не катит...
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32646001
Black Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но вот пример
CREATE FUNCTION test1() RETURNS VOID AS '
DECLARE
qwer RECORD;
BEGIN
SELECT INTO qwer * FROM bk_client WHERE cid=1;
INSERT INTO bk_action_log (csid,datetime,action_handler,result) VALUES (2,CURRENT_TIMESTAMP,\'test1\',qwer.name);
/*PERFORM test2(qwer);*/
RETURN;
END;
' LANGUAGE 'plpgsql';

SELECT test1();

Получаем строку:

billing=# SELECT * FROM bk_action_log WHERE alid=24;
DEBUG: StartTransactionCommand
DEBUG: PortalRun
DEBUG: CommitTransactionCommand
alid | csid | datetime | action_handler | result
----+------+------------------------+---------------+--------------
24 | 2 | 2004-08-12 09:33:09.806135+03 | test1 | Vasya
(1 запись)

Далее...

CREATE OR REPLACE FUNCTION test1() RETURNS VOID AS '
DECLARE
qwer RECORD;
BEGIN
SELECT INTO qwer * FROM bk_client WHERE cid=1;
INSERT INTO bk_action_log (csid,datetime,action_handler,result) VALUES (2,CURRENT_TIMESTAMP,\'test1\',qwer.name);
PERFORM test2(qwer);
RETURN;
END;
' LANGUAGE 'plpgsql';

CREATE FUNCTION test2(record) RETURNS VOID AS '
BEGIN
INSERT INTO bk_action_log (csid,datetime,action_handler,result) VALUES (2,CURRENT_TIMESTAMP,\'FUUUUCK\',\'!!!!!!!\');
END;
' LANGUAGE 'plpgsql';

SELECT test1();

DEBUG: StartTransactionCommand
DEBUG: PortalRun
DEBUG: AbortCurrentTransaction

ERROR: колонка "qwer" не существует
CONTEXT: PL/pgSQL function "test1" line 6 at perform
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32647082
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так не пробовал???

CREATE OR REPLACE FUNCTION trig_pr_accounting() RETURNS TRIGGER AS '
BEGIN
PERFORM dialup_time_acct(NEW. ПОЛЕ , OLD. ПОЛЕ , \'QWERQWER\');
RETURN NEW;
END;
'LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32647092
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так не пробовал???

CREATE OR REPLACE FUNCTION trig_pr_accounting() RETURNS TRIGGER AS '
BEGIN
PERFORM dialup_time_acct(NEW. ПОЛЕ , OLD. ПОЛЕ , \'QWERQWER\');
RETURN NEW;
END;
'LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32647096
Black Jaguar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не.. мне так не надо....
...
Рейтинг: 0 / 0
Передача NEW в качестве параметра функциям!
    #32651788
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я что то не понял а где у тебя в test2 используется твой рекорд ????
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача NEW в качестве параметра функциям!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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