Re: PL/pgSQL: "record not assigned yet" meaning?
От
JanWieck@t-online.de (Jan Wieck)
Тема
Re: PL/pgSQL: "record not assigned yet" meaning?
Дата
Msg-id
200005012130.XAA08359@hot.jw.home
Ответ на
PL/pgSQL: "record not assigned yet" meaning? (Ed Loehr)
Список
Дерево обсуждения
PL/pgSQL: "record not assigned yet" meaning? Ed Loehr <eloehr@austin.rr.com>
Re: PL/pgSQL: "record not assigned yet" meaning? JanWieck@t-online.de (Jan Wieck)
Ed Loehr wrote:
> I have a plpgsql function that sets a column value on insert if it was not
> supplied:
>
> CREATE FUNCTION set_expense_unit()
> RETURNS OPAQUE AS
> 'DECLARE
> t RECORD;
> BEGIN
> if NEW.expense_unit_id isnull then
> SELECT INTO t eu.*
> FROM expense_unit eu, expense_type et
> WHERE et.id = NEW.expense_type_id
> AND et.expense_unit_id = eu.id;
>
> NEW.expense_unit_id := t.id;
> end if;
>
> RETURN NEW;
> END;'
> LANGUAGE 'plpgsql';
>
> DROP TRIGGER expense_insert_trigger ON expense;
> CREATE TRIGGER expense_insert_trigger
> BEFORE INSERT ON expense
> FOR EACH ROW
> EXECUTE PROCEDURE set_expense_unit();
>
> Each time it runs, I get this error:
>
> ERROR: record t is unassigned yet
>
> Any ideas what this means?
Means the "SELECT INTO t" failed to find a matching row.
You'd better check that with an
if NOT FOUND then
RAISE ...
end if;
directly after the SELECT to get your own, more appropriate
error message.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #
В списке pgsql-general по дате отправления