Oracle使用EXECUTE IMMEDIATE 动态 SQL 传递 JSON_OBJECT_T类型参数

sql 复制代码
CREATE OR REPLACE FUNCTION process_json(json_data JSON_OBJECT_T) RETURN VARCHAR2 AS
    name_value VARCHAR2(100);
    age_value NUMBER;
    city_value VARCHAR2(100);
BEGIN
    name_value := json_data.GET('name').TO_STRING;
    age_value := json_data.GET('age').TO_NUMBER;
    city_value := json_data.GET('city').TO_STRING;
    RETURN 'Name: ' || name_value || ', Age: ' || age_value || ', City: ' || city_value;
END;
/

DECLARE
    json_obj JSON_OBJECT_T;
    sql_stmt VARCHAR2(500);
    result VARCHAR2(500);
BEGIN
    json_obj := JSON_OBJECT_T('{"name":"John","age":30,"city":"New York"}');

    sql_stmt := 'BEGIN :result := process_json(:json_param); END;';

    EXECUTE IMMEDIATE sql_stmt USING OUT result, IN json_obj;

    DBMS_OUTPUT.PUT_LINE(result);
END;

函数 process_json 从传入的 JSON 数据中提取了不同键对应的值,并将它们组合成一个返回的字符串。在匿名块中,通过动态 SQL 执行了这个函数并输出结果。

下面是传输json字符串的改动方法:

复制代码
EXECUTE IMMEDIATE sql_stmt USING OUT result, IN json_str;

调用方法的接受参数改成字符串就可以了。

相关推荐
杨云龙UP6 小时前
从0搭建Oracle ODA NFS异地备份:从YUM源到RMAN定时任务的全流程
linux·运维·数据库·oracle
差点GDP7 小时前
模拟请求测试 Fake Rest API Test
前端·网络·json
5***26227 小时前
SQL Server导出和导入可选的数据库表和数据,以sql脚本形式
数据库·sql
ID_180079054737 小时前
基于 Python 的 Cdiscount 商品详情 API 调用与 JSON 核心字段解析(含多规格 SKU 提取)
开发语言·python·json
JSUITDLWXL7 小时前
Oracle记录被锁的查询与强制删除方法
数据库·oracle
闲人编程8 小时前
OpenAPI/Swagger规范与API文档自动化
运维·自动化·json·swagger·schema·openapi·codecapsule
潇湘秦9 小时前
ORACLE_PDB_SID和ORACLE_SID的区别
数据库·oracle
聪聪那年2210 小时前
Oracle 11g windows 10安装与卸载
数据库·oracle
云和恩墨11 小时前
AI驱动的Oracle SQL优化:从经验依赖到智能协同的三大价值
人工智能·sql·oracle·深度优先·dba
尋有緣12 小时前
力扣1069-产品销售分析II
leetcode·oracle·数据库开发