Re: cursors and function question
| От | Adrian Klaver | 
|---|---|
| Тема | Re: cursors and function question | 
| Дата | |
| Msg-id | 83c954ba-4d14-ac71-f4ea-30ce25b9a310@aklaver.com обсуждение исходный текст | 
| Ответ на | cursors and function question (armand pirvu <armand.pirvu@gmail.com>) | 
| Ответы | Re: cursors and function question | 
| Список | pgsql-general | 
On 02/13/2018 10:22 AM, armand pirvu wrote:
> Hi
> 
> Is there any elegant way not a two steps way I can output the cursor value at each step?
> 
> 
> testtbl table has this content
> 
>      col1    |    col2    | col3
> ------------+------------+------
>   E1         | CAT1       |    0
>   E1         | CAT2       |    0
>   E1         | CAT3       |    0
>   E4         | CAT1       |    0
>   E5         | CAT1       |    0
>   E6         | CAT1       |    0
>   E7         | CAT1       |    0
> 
> 
> This works
> BEGIN WORK;
> DECLARE fooc  CURSOR FOR SELECT * FROM testtbl;
> FETCH ALL FROM fooc;
> CLOSE fooc;
> COMMIT WORK;
> 
>      col1    |    col2    | col3
> ------------+------------+------
>   E1         | CAT1       |    0
>   E1         | CAT2       |    0
>   E1         | CAT3       |    0
>   E4         | CAT1       |    0
>   E5         | CAT1       |    0
>   E6         | CAT1       |    0
>   E7         | CAT1       |    0
> 
> 
> But
> CREATE OR REPLACE FUNCTION foofunc()
>     RETURNS text AS $$
> DECLARE
>   var2   RECORD;
>   cur CURSOR FOR SELECT * from testtbl;
> BEGIN
>     OPEN cur;
>      LOOP
>        FETCH cur INTO var2;
>        return var2;
>     END LOOP;
>     CLOSE cur;
> END; $$
> LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.foofunc()
  RETURNS SETOF testtbl
  LANGUAGE sql
AS $function$
     SELECT * FROM testtbl;
$function$
test=> select * from foofunc();
  col1 | col2 | col3
------+------+------
  E1   | CAT1 |    0
  E1   | CAT2 |    0
  E1   | CAT3 |    0
  E4   | CAT1 |    0
  E5   | CAT1 |    0
  E6   | CAT1 |    0
  E7   | CAT1 |    0
(7 rows)
> 
> 
> select foofunc();
>              foofunc
> -------------------------------
>   ("E1        ","CAT1      ",0)
> 
> But I am looking to get
> 
>              foofunc
> -------------------------------
>   ("E1        ","CAT1      ",0)
>   ("E1        ","CATs      ",0)
> etc
> 
> 
> 
> Many thanks
> — Armand
> 
-- 
Adrian Klaver
adrian.klaver@aklaver.com
		
	В списке pgsql-general по дате отправления: