PostgreSql:将行插入数据库后无法检索行? 创建或替换函数sp_post_itemsi_data json 返回表实践者id字符变化、项id字符变化、顺序id字符变化、, 状态id整数, -sku_代码字符变化、装饰_工艺字符变化、数量整数、, 项目\更新\无时区的时间戳 作为$function$ 开始 在vw\ U项目\状态\详细信息中插入履行者\ id、项目\ id、订单\ id、状态\ id、sku \ U代码, 装修技术、数量、项目更新时间 选择 i_数据->>“实践者ID”, t->>“项目ID”, i_数据->>“订单ID”, 1000, t->>“SKU代码”, t->>“装饰技术”, 10, 现在 从json_数组_元素si_数据->'items't 返回履行者id、项目id、订单id、状态id、项目更新时间; -返回履行者id、项目id、订单id、状态id、项目更新时间; 终止 $function$ 语言plpgsql;
运行存储函数的示例数据 从post_项{orderId:s]中选择*, 实践者ID:kv0fdt6cx7, 订单详情苏尔:嗯, 项目:[ { 装饰技术:激光雕刻,项目描述:用于Oracle测试的测试Sku, 项目ID:aagasdsam1, 制造商名称:h-d9ccea00cn-prepress, skuCode:CIM-QYXB3789,产品名称:Tsdacle测试,数量:225,任务ID:33a1sd769876c52 }, { 装饰技术:ssdas 项目描述:用于测试的测试Sku, itemId:aagam2, 制造商名称:httsadfa2d72-f225-4a03-addd-d9ccea00c874~1sadlpen spress, SKU代码:CXB3789, productName:用于Oracle测试的测试Sku, 数量:225, 任务ID:33asad6c52 } ] }'::json 当我尝试运行函数时,函数值被插入到DB中,但返回的结果是什么也没有收到 预期产量 返回存储函数的返回查询中提到的参数 尝试了多种方法,但始终没有得到任何输出您需要添加:PostgreSql:将行插入数据库后无法检索行? 创建或替换函数sp_post_itemsi_data json 返回表实践者id字符变化、项id字符变化、顺序id字符变化、, 状态id整数, -sku_代码字符变化、装饰_工艺字符变化、数量整数、, 项目\更新\无时区的时间戳 作为$function$ 开始 在vw\ U项目\状态\详细信息中插入履行者\ id、项目\ id、订单\ id、状态\ id、sku \ U代码, 装修技术、数量、项目更新时间 选择 i_数据->>“实践者ID”, t->>“项目ID”, i_数据->>“订单ID”, 1000, t->>“SKU代码”, t->>“装饰技术”, 10, 现在 从json_数组_元素si_数据->'items't 返回履行者id、项目id、订单id、状态id、项目更新时间; -返回履行者id、项目id、订单id、状态id、项目更新时间; 终止 $function$ 语言plpgsql;,sql,postgresql,Sql,Postgresql,运行存储函数的示例数据 从post_项{orderId:s]中选择*, 实践者ID:kv0fdt6cx7, 订单详情苏尔:嗯, 项目:[ { 装饰技术:激光雕刻,项目描述:用于Oracle测试的测试Sku, 项目ID:aagasdsam1, 制造商名称:h-d9ccea00cn-prepress, skuCode:CIM-QYXB3789,产品名称:Tsdacle测试,数量:225,任务ID:33a1sd769876c52 }, { 装饰技术:ssdas 项目描述:用于测试的测试Sku, ite
...
returning fulfiller_id ,item_id ,order_id , status_id , item_updated_time;
RETURN NEXT;
RETURN;
...
从这里开始:
42.6.1.2。returnnext和returnquery
RETURN NEXT和RETURN QUERY实际上并不从函数返回,它们只是将零行或多行追加到函数的结果集中。然后继续执行PL/pgSQL函数中的下一条语句。在执行连续的RETURN NEXT或RETURN查询命令时,将建立结果集。最终的返回(不应该有参数)会导致控件退出函数,或者您可以让控件到达函数的末尾。
RETURNS table是RETURNS setof的别名,因此需要使用return NEXT返回一个集合
更新
我的错误。我想我记得returnnext会自动提取out变量。为了实现这一点,您需要在下一次返回之前将返回的值分配给outtable变量。例如:
\d names
Table "public.names"
Column | Type | Collation | Nullable | Default
--------+------------------------+-----------+----------+---------
id | integer | | not null |
name | character varying(200) | | not null |
animal | character varying(200) | | not null |
Indexes:
"names_pkey" PRIMARY KEY, btree (id)
CREATE OR REPLACE FUNCTION public.return_test(id_in integer, name_in character varying, animal_in character varying)
RETURNS TABLE(id_out integer, name_out character varying, animal_out character varying)
LANGUAGE plpgsql
AS $function$
BEGIN
INSERT INTO
names (id, name, animal)
VALUES
(id_in, name_in, animal_in)
RETURNING id, name, animal INTO id_out, name_out, animal_out;
RETURN NEXT;
RETURN;
END;
$function$
select * from return_test(1, 'ranger', 'dog');
id_out | name_out | animal_out
--------+----------+------------
1 | ranger | dog
(1 row)
所以我需要追加-返回下一步;返回;-即使在这之后,我也没有得到任何输出。请参阅更新。还有一份关于名称冲突的参考资料。您可能需要在INSERT中为表名加上别名,并在RETURNING子句中使用别名。否则,表输出的列名可能会出现重复的名称错误。