Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PL/PGSQL函数,无法从psycopg2访问返回的结果集_Postgresql_Function_Psycopg2 - Fatal编程技术网

Postgresql PL/PGSQL函数,无法从psycopg2访问返回的结果集

Postgresql PL/PGSQL函数,无法从psycopg2访问返回的结果集,postgresql,function,psycopg2,Postgresql,Function,Psycopg2,我有一个pl/pgsql函数: CREATE OR REPLACE FUNCTION get_result(id integer) RETURNS SETOF my_table AS $ DECLARE result_set my_table%ROWTYPE; BEGIN IF id=0 THEN SELECT INTO result_set my_table_id, my_table_value FROM my_table

我有一个pl/pgsql函数:

CREATE OR REPLACE FUNCTION get_result(id integer) RETURNS SETOF my_table AS $
    DECLARE
        result_set my_table%ROWTYPE;
    BEGIN
        IF id=0 THEN
            SELECT INTO result_set my_table_id, my_table_value FROM my_table;
        ELSE
            SELECT INTO result_set my_table_id, my_table_value FROM my_table WHERE my_table_id=id;
        END IF;
        RETURN;
    END;
$ LANGUAGE plpgsql;
我正在尝试将其用于Python的psycopg2库。以下是python代码:

import psycopg2 as pg
conn = pg.connect(host='myhost', database='mydatabase', user='user', password='passwd')
cur = conn.cursor()
return cur.execute("SELECT * FROM get_result(0);") # returns NoneType
但是,如果我只是执行常规查询,我会返回正确的行集:

...
return cur.execute("SELECT my_table_id, my_table_value FROM mytable;") # returns iterable result set
我的pl/pgsql函数显然有问题,但我似乎无法正确使用它

我也试过使用

RETURN result_set;
而不仅仅是

RETURN

在我的plpgsql函数的第10行中,但从postgres得到一个错误。

请阅读将“RETURN;”更改为“RETURN result_set;”时得到的错误。然后读下面的-


一个提示-在您的情况下,您需要“RETURN QUERY”。

非常感谢,我记得前面看到了RETURN QUERY语句,但我认为它不正确。不过,这就成功了,谢谢!