Re: problem with plpgsql function

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: problem with plpgsql function
Дата
Msg-id 2418.966008212@sss.pgh.pa.us
обсуждение исходный текст
Ответ на problem with plpgsql function  (Alex Guryanow <gav@nlr.ru>)
Список pgsql-general
Alex Guryanow <gav@nlr.ru> writes:
>    CREATE FUNCTION all_isbn2( int4 ) RETURNS varchar AS 'DECLARE
>    i isbn%ROWTYPE;
>    res varchar;
>    BEGIN res := "";
>    FOR i IN SELECT * FROM isbn WHERE isbn.book_id = $1 LOOP
>    res := res || i.isbn;
>    END LOOP;
>    RETURN res;
>    END;' LANGUAGE 'plpgsql';

> ERROR:  Attribute '' not found

> What I'm doing wrong?

You need to write
    BEGIN res := '''';
Double quotes "" imply a variable or column name, not a string literal.
You need 4 quotes not 2 because you're inside a ' literal already
(you could also write res := \'\' if that seems clearer).

It occurs to me that we ought to make a push to consistently use
double-quotes not single-quotes in error messages that are reporting
names.  If the error had been
    ERROR:  Attribute "" not found
you might've figured out your mistake without help...

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: insert into table from select..
Следующее
От: Tom Lane
Дата:
Сообщение: Re: NOTIFY from PL/pgSQL trigger procedure