【问题标题】:Stringify array of object in oracle stored procedure在 oracle 存储过程中对对象数组进行字符串化
【发布时间】:2018-10-26 01:08:48
【问题描述】:

是否可以在 oracle 中对对象数组进行字符串化。

我有以下对象数组:

ARRAY_REPORT CLIENT_UPDATE_REPORT_ARRAY:=CLIENT_UPDATE_REPORT_ARRAY();
ARRAY_REPORT.EXTEND;
ARRAY_REPORT ( COMPTEUR ) := CLIENT_UPDATE_REPORT ( 
W_CCODE, 
w_raisonsocial, 
2,
W_ETATCLI_LABEL );
ARRAY_REPORT.EXTEND;
ARRAY_REPORT ( COMPTEUR ) := CLIENT_UPDATE_REPORT ( 
W_CCODE, 
w_raisonsocial, 
1,
W_ETATCLI_LABEL);

我想在 Oracle 存储过程的结果中返回一个 VARCHAR2。

varchar2 将包含 json 格式的数组内容。

【问题讨论】:

  • 请检查我的答案,如果您认为它适合您或提供相关反馈,请接受该答案。请阅读:stackoverflow.com/help/someone-answers 了解为什么它很重要。
  • 谢谢,但我当前的 Oracle 版本是 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

标签: oracle stored-procedures


【解决方案1】:

是的,您需要 Oracle 12.2 或更高版本才能使用 JSON_OBJECT 执行此操作

CREATE OR REPLACE TYPE typ_employee AS OBJECT ( employee_id INTEGER, first_name VARCHAR2(30) , SALARY NUMBER);
/
CREATE OR REPLACE TYPE typ_employee_array AS TABLE OF typ_employee;
/

SET SERVEROUTPUT ON
DECLARE
     v_emp_array   typ_employee_array := typ_employee_array ();
BEGIN
     v_emp_array.extend(2);
     v_emp_array(1) := typ_employee(100,'HAYTHEM',10000);
     v_emp_array(2) := typ_employee(101,'MAYTHEM',20000);
     FOR rec IN (
          SELECT
               JSON_OBJECT(
                    'emp_id' IS employee_id,
                    'fname' IS first_name,
                    'sal' IS salary
               )
          AS emp_json
          FROM TABLE ( v_emp_array )
     ) LOOP
          dbms_output.put_line(rec.emp_json);
     END LOOP;
END;
/

结果

Type TYP_EMPLOYEE compiled


Type TYP_EMPLOYEE_ARRAY compiled

{"emp_id":100,"fname":"HAYTHEM","sal":10000}
{"emp_id":101,"fname":"MAYTHEM","sal":20000}


PL/SQL procedure successfully completed.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多