plpython函数如何将结果集作为普通的sql查询结果集返回(而不是文本)。
这是功能定义 -
DROP FUNCTION IF EXISTS demo_report();
CREATE OR REPLACE FUNCTION demo_report()
RETURNS SETOF <what-type>
AS $$
rv = plpy.execute("SELECT * FROM test")
return rv
$$ LANGUAGE plpython3u;
当我执行选择demo_report(); 时,它应该将结果集返回给客户端而不是text.Right现在我将其作为文本 -
我在Windows上使用带有plpython3u的Postgres 9.2。
答案 0 :(得分:2)
我找到了获得理想结果的方法 - 对于表:
CREATE TABLE public.test
(
id serial NOT NULL,
name varchar(200) NOT NULL CHECK (name <> ''),
salary int,
created date,
CONSTRAINT id PRIMARY KEY (id),
)
WITH (
OIDS = FALSE,
autovacuum_enabled = true
);
我的Plpython3u功能是 -
CREATE OR REPLACE FUNCTION demo_report()
RETURNS SETOF test
AS $$
resp = []
rv = plpy.execute("SELECT * FROM test")
for i in rv:
resp.append(i)
return resp
$$ LANGUAGE 'plpython3u' VOLATILE;
我查询它 -
select * from demo_report();
现在我得到了理想的回应 -
到目前为止,这是一段相当不错的旅程。享受它。