如何从plpgsql函数获取结果

孔蒂

我有一个函数返回这样定义的结果集

CREATE TABLE tbl_obj_clients (
    id uuid NOT NULL,
    "type" schappnme_300.enm_obj_clients_types NOT NULL,
    status schappnme_300.enm_obj_clients_statuses NOT NULL,
    info jsonb NOT NULL,
    CONSTRAINT pk_tbl_obj_clients PRIMARY KEY (id)
);

但是,当我从代码中调用函数时,返回类型似乎转换为RECORD众所周知的类型tbl_obj_clients

CREATE OR REPLACE FUNCTION schappnme_300.fn_create_clients(in_type text DEFAULT 'ordinary'::text, in_status text DEFAULT 'active'::text, in_info json DEFAULT NULL::json, in_debug boolean DEFAULT false)
    RETURNS SETOF schappnme_300.tbl_obj_clients
    LANGUAGE plpgsql
    AS $function$
    ...

实际上,当我调用特定功能时

v_client tbl_obj_clients := NULL;

FOR v_client IN SELECT fn_create_clients('system', 'active', v_com_json, in_debug)
LOOP
    RAISE NOTICE '%',v_client;
END LOOP;

我得到具体的输出

("(d8526882-f656-4873-9b49-de972202ca66,system,active,""{""""data"""": [{""""type"""": """"string"""", """"label"""": """"Name"""", """"value"""": """"NotifyMe"""", """"description"""": """"obj_client_name"""", """"placeholder"""": """"[*client_name*]"""", """"sequenceorder"""": 10}, {""""type"""": """"string"""", """"label"""": """"Description"""", """"value"""": """"NotifyMe Administration Account"""", """"description"""": """"obj_client_description"""", """"placeholder"""": """"[*client_description*]"""", """"sequenceorder"""": 20}, {""""type"""": """"datetime"""", """"label"""": """"Created On"""", """"value"""": """"2019-07-29 17:30:00"""", """"description"""": """"obj_client_createdon"""", """"placeholder"""": """"[*client_created_on*]"""", """"sequenceorder"""": 30}, {""""type"""": """"datetime"""", """"label"""": """"Last Modified On"""", """"value"""": """"2019-07-29 17:30:00"""", """"description"""": """"obj_client_lastmodifiedon"""", """"placeholder"""": """"[*client_last_modified_on*]"""", """"sequenceorder"""": 40}, {""""type"""": """"numeric"""", """"label"""": """"Last Update"""", """"value"""": 0, """"description"""": """"obj_client_lastupdate"""", """"placeholder"""": """"[*client_last_update*]"""", """"sequenceorder"""": 50}], """"meta"""": {""""class"""": """"obj_client"""", """"dsname"""": """"tbl_obj_client"""", """"version"""": """"1.0.0""""}}"")")

实际上,我无法访问记录中的特定字段,此指令使我出错:

RAISE NOTICE '%',v_client.id;

v_client.id 22P02的语法不适用于uuid类型。

克莱门斯

您应该像表而不是标量那样查询函数:

FOR v_client IN SELECT * FROM fn_create_clients('system', 'active', v_com_json, in_debug)
LOOP
    RAISE NOTICE '%', v_client.id;
END LOOP;

因此v_client应一次包含一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从plpgsql函数返回RETURNING子句的结果?

如何在plpgsql函数中存储中间结果?

接收Java ResultSet从plpgsql函数返回的结果

如何使用递归函数获取查询结果?

如何从函数内部的查询中获取结果

如何使用SubmitJob函数获取结果

如何获取 async/await 函数的结果?

如何获取函数 Discord.PY 的结果?

返回查询时如何从plpgsql函数退出

如何使用C#获取异步函数结果

PL/SQL 如何从返回类型表的函数中获取结果

如何在 AngularJS 的 ng-repeat 中获取函数结果?

如何在函数返回之前从 AJAX 调用中获取结果?

如何从 JSF 中的 javascript 函数获取 h:link 的结果值?

如何从Keras中的自定义损失函数获取结果?

Vue JS - 如何在 methods() 中获取函数结果

如何使用哈希函数的结果来获取数组索引?

如何在$ .when函数中获取getjson promise的结果?

如何从正在构建结果列表的递归函数中获取尾部?

在angularjs工厂中,如何在解决函数后获取结果

HTML:如何在执行函数之前获取计算结果

如何在函数中传递mysql查询并获取结果

如何在JavaScript中获取函数MULTIPLO.SUPERIOR的结果?

如何使用 EF Core 从 Postgresql 函数中获取结果?

如何从函数中获取最终结果数据

如何从c#中的plpgsql函数返回refcursor?

如何从plpgsql函数返回整数并回滚每个修改?

如何将表行传递给plpgsql函数?

获取函数结果列表,直到结果> x