Re: How to fix set-valued function called in context that cannot accept a set in earlier versions - Mailing list pgsql-general

From Andrus
Subject Re: How to fix set-valued function called in context that cannot accept a set in earlier versions
Date
Msg-id DD690FC0EA8B483F93C32D7A349D20FA@andrusnotebook
Whole thread Raw
In response to Re: How to fix set-valued function called in context that cannot accept a set in earlier versions  (Merlin Moncure <mmoncure@gmail.com>)
Responses Re: How to fix set-valued function called in context that cannot accept a set in earlier versions
List pgsql-general
Thank you.

> another workaround is to wrap the pl/pgsql function in sql function.
> it's not always easy to re-work the function all into a 'from'
> expression.

I tried code below in 8.3 but got error

ERROR:  syntax error at or near "select"
LINE 30: select * from wordwrap(line,linelen);

Andrus.

CREATE OR REPLACE FUNCTION wordwrap(line text, linelen integer)
RETURNS SETOF text as $$
DECLARE
  words text[] := string_to_array(line,' ');
  i integer;
  res text:='';

BEGIN
  if trim(line)='' then
    return next '';
    return;
    end if;
 for i IN 1 .. array_upper(words,1) LOOP
   if length(res)+length(words[i]) > linelen THEN
     return next res;
     res := '';
     END IF ;
   if res<>'' then
     res := res || ' ';
     end if;
   res := res || words[i];
   end loop;
return next res;
END
 $$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION wordwrap83(line text, linelen integer)
RETURNS SETOF text as $$
BEGIN
select * from wordwrap(line,linelen);
END
 $$ LANGUAGE sql;


select wordwrap83('fdgdf',10)

pgsql-general by date:

Previous
From: "Igor Neyman"
Date:
Subject: Re: join two tables without a key
Next
From: hubert depesz lubaczewski
Date:
Subject: Re: How to fix set-valued function called in context that cannot accept a set in earlier versions