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;

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

相关推荐
程序员岳焱1 小时前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
后端·sql·mysql
Channing Lewis2 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
UGOTNOSHOT2 小时前
每日八股文6.3
数据库·sql
远方16093 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle
Lx3524 小时前
LIKE查询中索引有效利用的前缀匹配策略
后端·sql·oracle
岁忧5 小时前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上
sql·算法·leetcode
远方16096 小时前
0x-2-Oracle Linux 9上安装JDK配置环境变量
java·linux·oracle
bbsh20997 小时前
WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
数据库·sql·mysql·webfuture
陈丹阳(滁州学院)13 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方160914 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle