Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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;

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

运行存储函数的示例数据

从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中,但返回的结果是什么也没有收到

预期产量 返回存储函数的返回查询中提到的参数

尝试了多种方法,但始终没有得到任何输出

您需要添加:

...
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子句中使用别名。否则,表输出的列名可能会出现重复的名称错误。