NodeJS 和 PostgreSQL 函数 returns 元组,而不是行
NodeJS and PostgreSQL function returns tuple, not row
我是 运行 PostgreSQL 和 NodeJS。
在 PostgreSQL 中我有一个自定义函数 dummy
:
... RETURNS RECORD AS $$
...
DECLARE ret RECORD
...
RETURN ret;
END;
$$ LANGUAGE plpgsql;
在 NodeJS 中,这个 return 是一个 tuple
,作为一个 string
:
(x,y,z)
所以我必须手动拆分字符串并读取部分...
是否可以将 PostgreSQL return 和 tuple
作为 row
或类似的,所以我可以在 NodeJS 中使用 data.x
、data.y
和 data.z
相反?
fn():
t=# create or replace function f() returns record as $$ declare ret record; begin for ret in (select oid::int,datname::text from pg_database limit 1) loop return ret; end loop; end; $$ language plpgsql;
CREATE FUNCTION
您的来电:
t=# select f();
f
------------------
(13505,postgres)
(1 row)
预计来电:
t=# select * from f() as r(o int,n text);
o | n
-------+----------
13505 | postgres
(1 row)
如果你想预定义要隐式调用的记录结构,你可以创建一个虚拟的 fn():
t=# create or replace function dummy() returns table (a int,b text) as $$ begin return query select * from f() as r(o int,n text); end; $$ language plpgsql;
CREATE FUNCTION
t=# select * from dummy();
a | b
-------+----------
13505 | postgres
(1 row)
of 如果你想避免 FROM
:
t=# select (dummy()).*;
a | b
-------+----------
13505 | postgres
(1 row)
我是 运行 PostgreSQL 和 NodeJS。
在 PostgreSQL 中我有一个自定义函数 dummy
:
... RETURNS RECORD AS $$
...
DECLARE ret RECORD
...
RETURN ret;
END;
$$ LANGUAGE plpgsql;
在 NodeJS 中,这个 return 是一个 tuple
,作为一个 string
:
(x,y,z)
所以我必须手动拆分字符串并读取部分...
是否可以将 PostgreSQL return 和 tuple
作为 row
或类似的,所以我可以在 NodeJS 中使用 data.x
、data.y
和 data.z
相反?
fn():
t=# create or replace function f() returns record as $$ declare ret record; begin for ret in (select oid::int,datname::text from pg_database limit 1) loop return ret; end loop; end; $$ language plpgsql;
CREATE FUNCTION
您的来电:
t=# select f();
f
------------------
(13505,postgres)
(1 row)
预计来电:
t=# select * from f() as r(o int,n text);
o | n
-------+----------
13505 | postgres
(1 row)
如果你想预定义要隐式调用的记录结构,你可以创建一个虚拟的 fn():
t=# create or replace function dummy() returns table (a int,b text) as $$ begin return query select * from f() as r(o int,n text); end; $$ language plpgsql;
CREATE FUNCTION
t=# select * from dummy();
a | b
-------+----------
13505 | postgres
(1 row)
of 如果你想避免 FROM
:
t=# select (dummy()).*;
a | b
-------+----------
13505 | postgres
(1 row)