作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个返回定义的结果集的函数
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 syntax not vald for type 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
应该一次包含一行。
关于postgresql - 如何从 plpgsql 函数中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57281416/
我是一名优秀的程序员,十分优秀!