From: | "Andrus" <kobruleht2(at)hot(dot)ee> |
---|---|
To: | "Merlin Moncure" <mmoncure(at)gmail(dot)com>, <depesz(at)depesz(dot)com> |
Cc: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: How to fix set-valued function called in context that cannot accept a set in earlier versions |
Date: | 2010-04-05 14:26:39 |
Message-ID: | DD690FC0EA8B483F93C32D7A349D20FA@andrusnotebook |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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)
From | Date | Subject | |
---|---|---|---|
Next Message | hubert depesz lubaczewski | 2010-04-05 14:30:21 | Re: How to fix set-valued function called in context that cannot accept a set in earlier versions |
Previous Message | Igor Neyman | 2010-04-05 14:11:01 | Re: join two tables without a key |