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;

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

相关推荐
web3.08889996 小时前
微店商品详情API实用
python·json·时序数据库
CCPC不拿奖不改名6 小时前
SQL基础(SQL小白教程):MySQL语句+环境一键搭建+面试习题
数据库·sql·计算机网络·mysql·oracle·面试·职场和发展
Davina_yu10 小时前
2026年节假日表SQL
数据库·sql
wtsolutions10 小时前
Sheet-to-Doc二维码生成功能:让文档自动化更智能
json
码农小卡拉10 小时前
数据库:主键 VS 唯一索引 区别详解
java·数据库·sql
阿坤带你走近大数据11 小时前
ORACLE里length和lengthb函数的异同点分别是
数据库·oracle
航Hang*11 小时前
第3章:复习篇——第1节:创建和管理数据库---题库
数据库·笔记·sql·学习·期末·复习
R-sz12 小时前
如何将json行政区划导入数据库,中国行政区域数据(省市区县镇乡村五级联动)
java·数据库·json
闲人不梦卿12 小时前
数据库安全和事务以及sql
数据库·sql
阿坤带你走近大数据13 小时前
oracle的varchar2(200)和mysql的varchar(200) 最大支持的字节数和字符数都一样吗
数据库·mysql·oracle