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;
调用方法的接受参数改成字符串就可以了。