Обсуждение: pl/pgsql documentation

Поиск
Список
Период
Сортировка

pl/pgsql documentation

От
pgsql-bugs@postgresql.org
Дата:
Darcy (Darcy@ok-connect.com) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
pl/pgsql documentation

Long Description
The following documentation does not apear to reflect real world use.

[<<label>>]
FOR record | row IN select_clause LOOP
    statements
END LOOP;

(as snipped from http://postgresql.readysetnet.com/users-lounge/docs/7.0/postgres/c40914117.htm)

Sample Code
CREATE TABLE major_groups(id SERIAL, name TEXT);
INSERT INTO major_groups(name) VALUES 'one';
INSERT INTO major_groups(name) VALUES 'two';
INSERT INTO major_groups(name) VALUES 'three';

CREATE FUNCTION test3(INT4) RETURNS INT4 AS '
  DECLARE
    loc  INT4;
  BEGIN
    loc := $1;
    for i IN (select id from major_groups) loop
      (
      loc := $loc + $i;
      )
    end loop;
    return $loc;
  end;
' language 'plpgsql';

select test3(2);

NOTICE:  plpgsql: ERROR during compile of test3 near line 10
ERROR:  parse error at or near ";"


No file was uploaded with this report

Re: pl/pgsql documentation

От
Darcy Buskermolen
Дата:
Ok this has since been sorted out, however I propose that it is better
layed out in the documentation, or at the veryleast an example is given.
i MUST be defined as a RECORD, and you then refrence the returned result as
RECORD.field, Also you can NOT have ()'s arouns the select statement.

CREATE FUNCTION test3(INT4) RETURNS INT4 AS '
  DECLARE
    loc  INT4;
    i    RECORD;
  BEGIN
    loc := $1;
    FOR i IN  SELECT id FROM major_groups LOOP
      loc := loc + i.id;
    END LOOP;
    RETURN loc;
  END;
' LANGUAGE 'plpgsql';

select test3(2);


>Short Description
>pl/pgsql documentation
>
>Long Description
>The following documentation does not apear to reflect real world use.
>
>[<<label>>]
>FOR record | row IN select_clause LOOP
>    statements
>END LOOP;
>
>(as snipped from
http://postgresql.readysetnet.com/users-lounge/docs/7.0/postgres/c40914117.h
tm)
>
>Sample Code
>CREATE TABLE major_groups(id SERIAL, name TEXT);
>INSERT INTO major_groups(name) VALUES 'one';
>INSERT INTO major_groups(name) VALUES 'two';
>INSERT INTO major_groups(name) VALUES 'three';
>
>CREATE FUNCTION test3(INT4) RETURNS INT4 AS '
>  DECLARE
>    loc  INT4;
>  BEGIN
>    loc := $1;
>    for i IN (select id from major_groups) loop
>      (
>      loc := $loc + $i;
>      )
>    end loop;
>    return $loc;
>  end;
>' language 'plpgsql';
>
>select test3(2);
>
>NOTICE:  plpgsql: ERROR during compile of test3 near line 10
>ERROR:  parse error at or near ";"
>
>
>No file was uploaded with this report
>
>
>