Postgresql PL/PGSQL函数,无法从psycopg2访问返回的结果集
我有一个pl/pgsql函数: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
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语句,但我认为它不正确。不过,这就成功了,谢谢!