oracle apex post接口

ops/2025/2/22 17:30:14/

日常记录

使用到了apex_json方式接收

、、、1
首先,接口通过body传递过来,成功接收到, 数据格式为 JSON_OBJECT_T
l_json := JSON_OBJECT_T.parse(:body);  
这里我用参数接收到 
然后 里面是包含了 "data"
我用 继续接收到这个
l_data            := l_json.get_object('data');、、、2
但是有个问题,如果是使用系统原始的 get_array('persons')  之类的,始终是报错 
我只能将代码转成clob格式存放到系统的参数中
V_JSON_DATA := l_data.To_Clob;、、、3apex_json.parse(V_JSON_DATA);
apex_json.parse函数来解析JSON字符串使用 apex_json.parse(V_JSON_DATA); 将 CLOB 类型的 JSON 数据解析为 APEX 的 JSON 对象。
然后,尝试使用 apex_json.get_varchar2 函数来访问解析后的 JSON 数据。
apex_json.get_varchar2 函数是线程安全的,这意味着同一时间的多个请求不会互相影响。
每个 APEX 应用程序实例(即每个用户会话)都有自己的内存空间,
因此一个会话中的 apex_json.get_varchar2 调用不会影响另一个会话中的调用。

代码

DECLAREl_json     JSON_OBJECT_T;l_data     JSON_OBJECT_T;V_JSON   JSON_OBJECT_T;V_DATA   JSON_OBJECT_T;V_JSON_DATA CLOB;V_VISITORS  JSON_ARRAY_T;V_VISITOR   JSON_OBJECT_T;PAR_DATA_NO NUMBER;PAR_EXISTS  NUMBER;RETURNOBJ JSON_OBJECT_T; -- 返回V_SQLCODE VARCHAR2(4000); -- 错误代码V_SQLERRM VARCHAR2(4000); -- 错误内容BEGINl_json := JSON_OBJECT_T.parse(:body);-- 获取嵌套的data对象l_data            := l_json.get_object('data');V_JSON_DATA := l_data.To_Clob;apex_json.parse(V_JSON_DATA);-- 当前流程标题是否存在SELECT COUNT(*)INTO PAR_EXISTSFROM TZ_FREE_TICKETSWHERE PROCESS_TITLE = apex_json.get_varchar2('process_title')AND DEL_FLAG = 1;IF PAR_EXISTS > 0 THEN-- 获取原有批次号  SELECT DATA_NOINTO PAR_DATA_NOFROM TZ_FREE_TICKETSWHERE PROCESS_TITLE = apex_json.get_varchar2('process_title')AND DEL_FLAG = 1;-- 原有数据删除,重新插入UPDATE TZ_FREE_TICKETSSET DEL_FLAG = 0, UPDATE_TIME = SYSDATEWHERE PROCESS_TITLE = apex_json.get_varchar2('process_title')AND DEL_FLAG = 1; -- 根据流程单据名称更新ELSESELECT TZ_FREE_TICKETS_DATA_NO_SEQ.NEXTVAL INTO PAR_DATA_NO FROM DUAL; -- 获取当前批次号      END IF;-- 插入主表数据INSERT INTO TZ_FREE_TICKETS(DATA_NO,OPEN_INVOICE, -- 是否出票 是/否APPLY_TIME, -- 申请日期PROCESS_TITLE, -- 流程单据名称PROCESS_NUMBER, -- OA流程编号APPLY_DEPT, -- 申请部门APPLY_BY, -- 申请人FREE_TICKET_TYPE, -- 免票类型ENTER_GARDEN_CAUSE, -- 入园事由ENTER_GARDEN_DATE, -- 入园日期 TICKET_NAME, -- 票种名称TICKET_PRICE, -- 门票单价APPLY_NUM, -- 申请入园人数FREE_TICKET_PRICE, -- 免票金额RECIPIENT_UNIT, -- 领用人/单位RECIPIENT_PHONE, --领用人联系电话REMARKS, -- 备注BUSID -- 景区 莽山221)VALUES(PAR_DATA_NO,apex_json.get_varchar2('open_invoice'),apex_json.get_varchar2('apply_time'),apex_json.get_varchar2('process_title'),apex_json.get_varchar2('process_number'),apex_json.get_varchar2('apply_dept'),apex_json.get_varchar2('apply_by'),apex_json.get_varchar2('free_ticket_type'),apex_json.get_varchar2('enter_garden_cause'),apex_json.get_varchar2('enter_garden_date'),apex_json.get_varchar2('ticket_name'),apex_json.get_number('ticket_price'),apex_json.get_number('apply_num'),apex_json.get_number('free_ticket_price'),apex_json.get_varchar2('recipient_unit'),apex_json.get_varchar2('recipient_phone'),apex_json.get_varchar2('remarks'),apex_json.get_varchar2('busid'));-- 插入游客信息表数据FOR I IN 1 .. apex_json.get_count('visitors') LOOPINSERT INTO TZ_FREE_TICKETS_VISITOR(DATA_NO,VISITOR_NAME, -- 游客姓名VISITOR_ID_NUMBER, -- 游客身份证号ENTRY_STATUS, -- 入园状态,是 否TICKET_ORDER_NO, -- 关联票务订单号BUSID)VALUES(PAR_DATA_NO,apex_json.get_varchar2('visitors[%d].visitor_name', i),apex_json.get_varchar2('visitors[%d].visitor_id_number', i),apex_json.get_varchar2('visitors[%d].entry_status', i),apex_json.get_varchar2('visitors[%d].ticket_order_number', i),apex_json.get_varchar2('busid'));END LOOP;COMMIT;-- 设置返回信息RETURNOBJ := NEW JSON_OBJECT_T;RETURNOBJ.PUT('msg', '成功');RETURNOBJ.PUT('code', 200);SYS.HTP.PRINT(RETURNOBJ.TO_STRING());EXCEPTIONWHEN OTHERS THENV_SQLCODE := SQLCODE;V_SQLERRM := SUBSTR(SQLERRM, 1, 2000);RETURNOBJ := NEW JSON_OBJECT_T;RETURNOBJ.PUT('msg', '失败' || V_SQLERRM);RETURNOBJ.PUT('code', 500);SYS.HTP.PRINT(RETURNOBJ.TO_STRING());
END;

参数

{"data": {"open_invoice": "是","apply_time": "2024-05-20","process_title": "测试流程单","process_number": "PR202405200001","apply_dept": "人力资源部","apply_by": "张三","free_ticket_type": "VIP","enter_garden_cause": "商务合作","enter_garden_date": "2024-05-22","ticket_name": "普通门票","ticket_price": 120.00,"apply_num": 4,"free_ticket_price": 480.00,"recipient_unit": "合作伙伴公司","recipient_phone": "13800000000","remarks": "请尽快处理","busid": "221","visitors": [{"visitor_name": "张三","visitor_id_number": "123456789012345678","entry_status": "是","ticket_order_number": "T11111111"},{"visitor_name": "李四","visitor_id_number": "123456789012345679","entry_status": "是","ticket_order_number": "T11111111"},{"visitor_name": "王五","visitor_id_number": "123456789012345670","entry_status": "是","ticket_order_number": "T11111111"},{"visitor_name": "赵六","visitor_id_number": "123456789012345671","entry_status": "是","ticket_order_number": "T11111111"}]}
}

http://www.ppmy.cn/ops/160560.html

相关文章

MATLAB基础学习相关知识

MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

自动化办公|xlwings生成图表

在日常的数据分析和报告生成中,Excel图表是一个非常重要的工具。它能够帮助我们直观地展示数据,发现数据中的规律和趋势。然而,手动创建和调整图表往往耗时且容易出错。幸运的是,借助Python的xlwings库,我们可以自动化…

Tomcat理论(Ⅰ)

目录 服务器流程图一览 一、JavaWeb前奏(了解) 1. C/S结构 2. B/S结构 3. 静态网页&动态网页 4.常见的网页 5.Web服务器 知名服务器: ​编辑 二、Tomcat安装(熟练) 1.Tomcat概述 2.Tomcat的作用 3.Tomcat安装 4.Tomcat测试 3.…

超级详细,知识图谱系统的理论详解+部署过程

知识图谱系统(Knowledge Graph System)是一种用于表示、存储、查询和推理知识的系统。它通过结构化的方式将现实世界中的实体、概念及其相互关系组织成一个图结构,从而帮助机器理解和处理复杂的知识。 知识图谱的核心组成部分 实体(Entities): 实体是知识图谱中的节点,…

使用excel中的VBA合并多个excel文件

需求是这样的: 在Windows下,用excel文件让多个小组填写了统计信息,现在我需要把收集的多个文件汇总到一个文件中,前三行为标题可以忽略,第四行为收集信息的列名,处理每一行数据的时候,发现某一行…

如何使用 DeepSeek R1 构建开源 ChatGPT Operator 替代方案

开源大型语言模型(LLMs)的兴起使得创建 AI 驱动的工具比以往任何时候都更容易,这些工具可以与 OpenAI 的 ChatGPT Operator 等专有解决方案相媲美。在这些开源模型中,DeepSeek R1 以其强大的推理能力、自由的可访问性和适应性而脱…

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…

Github 2025-02-20 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2025-02-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10JavaScript项目1Moby 项目 - 软件容器化的开源工具集 创建周期:4059 天开发语言:Go协议类型:Apache License 2.0Star数量:67419 个…