Обсуждение: Get error when calling function that returns a table

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

Get error when calling function that returns a table

От
Russell Rose | Passfield Data Systems
Дата:

I have got a procedure (test.sql) and this calls a function (test_rr.sql) which returns a table. I use the SQL:

Call test();

 

I get the error:

ERROR: invalid input syntax for type integer: "(14891,0,"VIMALBA ","P901 ",111.000000)"

CONTEXT: PL/pgSQL function test() line 13 at FETCH

SQL state: 22P02

 

Can anyone help please

 

Russell Rose

 

Вложения

Re: Get error when calling function that returns a table

От
Tom Lane
Дата:
Russell Rose | Passfield Data Systems <russellrose@passfield.co.uk> writes:
> I have got a procedure (test.sql) and this calls a function (test_rr.sql) which returns a table. I use the SQL:
> Call test();

> I get the error:
> ERROR: invalid input syntax for type integer: "(14891,0,"VIMALBA ","P901 ",111.000000)"
> CONTEXT: PL/pgSQL function test() line 13 at FETCH
> SQL state: 22P02

Didn't test, but I think this:

    DECLARE my_cur  scroll CURSOR FOR
        SELECT test_rr() ;

needs to be more like

    DECLARE my_cur  scroll CURSOR FOR
        SELECT * FROM test_rr() ;

As you have it, the cursor produces a single composite column,
which isn't consistent with

    FETCH FROM my_cur INTO ret1, ret2, ret3, ret4, ret5 ;

I vaguely recall that plpgsql will sometimes let you be sloppy
about composites versus separate columns, but evidently not here.

            regards, tom lane