Re: Problem with FOUND

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Problem with FOUND
Дата
Msg-id 16346.1214493204@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Problem with FOUND  ("A B" <gentosaker@gmail.com>)
Ответы Re: Problem with FOUND  ("A B" <gentosaker@gmail.com>)
Список pgsql-general
"A B" <gentosaker@gmail.com> writes:
> CREATE OR REPLACE FUNCTION addRating(tbl_ INTEGER,value_ INTEGER)
> RETURNS void AS $$
> DECLARE
>     tablename TEXT;
>     fieldname TEXT;
> BEGIN
>     tablename:='Rating_'||tbl_;
>     fieldname:='val';
>     EXECUTE 'UPDATE '||tablename||' SET '||fieldname||'='||value_||'
> WHERE '||fieldname||'='||value_ ;
>     IF NOT FOUND THEN
>         EXECUTE 'INSERT INTO '||tablename||' ('||fieldname||') VALUES ('||value_||')';
>     END IF;
> END;
> $$ LANGUAGE plpgsql;

> Can anyone help me spot the error?

EXECUTE doesn't set FOUND.

I think you'd be well advised to rethink your table layout so you don't
need so much dynamic SQL.  The above is going to suck on both
performance and readability grounds, and it doesn't look like it's
accomplishing anything you couldn't do by combining all the Rating
tables into one table with an extra key column.

            regards, tom lane

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

Предыдущее
От: Michael Fuhr
Дата:
Сообщение: Re: Unicode problem again
Следующее
От: Garry Saddington
Дата:
Сообщение: Re: Unicode problem again