我首先要说我已经有一段时间不必使用SQL了,虽然我已经编写了SQL查询,但我还没有机会使用嵌入式函数这就是我在这里尝试做的事情......
我有一个查询,它本身会生成几行数据,我使用row_to_json函数格式化该数据,以便在rest api中使用。我目前在node.js实现中对查询进行了硬编码,但是想将其移动到Db中并简单地调用一个函数。我设法写了函数**但它只返回第一行数据。我确定我只是误解了一些简单的概念,但我的谷歌搜索并没有帮助我确定什么是正确的行动方案。请查看以下内容,让我知道为什么该函数只返回第一条记录。
SELECT row_to_json(FooBar) FROM(SELECT car_items_t.item_id, car_items_t.item_name,
car_items_t.item_desc, car_items_t.item_photo, car_items_t.item_price
FROM "SS".rfid_t, "SS".tr_t, "SS".car_t,
"SS".car_items_t, "SS".tr_items_t
WHERE rfid_t.aid = 1
AND rfid_t.tid = tr_t.tid AND tr_t.aid = car_t.aid
AND tr_t.tid = tr_items_t.tid AND car_t.mid = car_items_t.mid
AND tr_items_t.mid = car_t.mid) FooBar;
VS.
CREATE OR REPLACE FUNCTION "SS".getitemsbyrfid(integer)
RETURNS json AS
$BODY$
SELECT row_to_json(FooBar) FROM(SELECT car_items_t.item_id, car_items_t.item_name,
car_items_t.item_desc, car_items_t.item_photo, car_items_t.item_price
FROM "SS".rfid_t, "SS".tr_t, "SS".car_t,
"SS".car_items_t, "SS".tr_items_t
WHERE rfid_t.aid = $1
AND rfid_t.tid = tr_t.tid AND tr_t.aid = car_t.aid
AND tr_t.tid = tr_items_t.tid AND car_t.mid = car_items_t.mid
AND tr_items_t.mid = car_t.mid) FooBar;
$BODY$
答案 0 :(得分:2)
宣布RETURNS json
。
如果您想要一个集合,请将其声明为RETURNS SETOF json
。