Search Postgresql Archives

Function returning SETOF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



List,

I have a simple function:
CREATE OR REPLACE FUNCTION parse_string (TEXT, TEXT) RETURNS SETOF TEXT AS '
DECLARE
    str             ALIAS FOR $1;           -- the string to parse
    delimiter       ALIAS FOR $2;           -- the delimiter
    field           TEXT;                   -- return value from split_part
    idx             INTEGER DEFAULT 1;      -- field counter
    funcName        TEXT DEFAULT ''parse_string'';  -- function name
    dbg             BOOLEAN DEFAULT True;   -- debug print flag
BEGIN
    IF dbg THEN
        RAISE NOTICE ''% ()'', funcName;
    END IF;
    SELECT INTO field split_part (str, delimiter, idx);
    WHILE field != '''' LOOP
        RETURN NEXT field;
        idx = idx + 1;
        SELECT INTO field split_part (str, delimiter, idx);
    END LOOP;
    RETURN;
END;
' LANGUAGE 'plpgsql';

As you can see, I'm using split_part to parse the string in a loop. I want 
this thing to return the set of values that make up the fields in the string. 
When I call the function from psql here is the error I'm getting:
rnd=# select parse_string ('1/2/3/4/5', '/');
NOTICE:  parse_string ()
ERROR:  set-valued function called in context that cannot accept a set
CONTEXT:  PL/pgSQL function "parse_string" line 14 at return next

Then I tried this approach and got the same error:
rnd=# select ARRAY(SELECT parse_string ('1/2/3/4/5', '/'));
NOTICE:  parse_string ()
ERROR:  set-valued function called in context that cannot accept a set
CONTEXT:  PL/pgSQL function "parse_string" line 14 at return next

Version Information:
rnd=# select version();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 7.4.6 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 
20030502 (Red Hat Linux 3.2.3-49)

I'm sure that I'm doing something stupid. Any input would be appreciated...


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux