我们正在将一个项目从MySQL迁移到Posterre。
在MySQL中,我们有以下存储过程代码:
CREATE OR REPLACE PROCEDURE getData()
BEGIN
SELECT t1.*,
t2.*,
t3.*,
t4.*
FROM t1
JOIN t2 ON t1.t1_id = t2.t2_t1_id
JOIN t3 ON t1.t1_id = t3.t3_t1_id
JOIN t4 ON t1.t1_id = t4.t4_t1_id;
END //
字符串
当从使用CALL getData)_
的NodeJS应用程序调用时,它返回数组或行和列形式的数据,例如row[0]['t2_t1_id']
以访问行1列t2_t1_id。
我们得到的以可用格式(JSON)返回数据的Posterre版本如下所示:
RETURNS TABLE( j JSON )
LANGUAGE plpgsql AS $$
BEGIN
RETURN QUERY
WITH rd AS (
SELECT t1.*,
t2.*,
t3.*,
t4.*
FROM t1
JOIN t2 ON t1.t1_id = t2.t2_t1_id
JOIN t3 ON t1.t1_id = t3.t3_t1_id
JOIN t4 ON t1.t1_id = t4.t4_t1_id
)
SELECT row_to_json(rd) FROM rd;
END;
型
但这会以JSON的形式返回:
[
{
getdata: {
t1_id: 62,
t1_name: 'xx',
t2_id: 67,
t2_t1_id: 62, ... },
getdata: {
t1_id: 63,
t1_name: 'yy',
t2_id: 69,
t2_t1_id: 63, ... }, ...
型
我想让PostGres函数返回数据对象,就像它返回MySQL等价对象一样?
1条答案
按热度按时间zu0ti5jz1#
尝试以下操作我修改了PostgreSQL函数,使其返回一组记录而不是
JSON
,使其输出格式与MySQL
存储过程更接近。字符串
你可以这样调用函数
型