21.46 WRITEプロシージャのシグネチャ13

このプロシージャは、カーソルが戻す行がすべて格納された配列が値である属性を書き込みます。各行は別個のオブジェクトです。

問合せにオブジェクト・タイプ、コレクションまたはカーソルの列が含まれる場合、プロシージャではwrite(p_name,<xmltype>)を使用します。 WRITEプロシージャのシグネチャ14を参照してください。 それ以外の場合は、DBMS_SQLを使用して行をフェッチし、該当する列データ型のwrite()プロシージャを出力に使用します。 列の型がvarchar2で、大文字の値が'TRUE'または'FALSE'である場合、ブール値を生成します。

構文

APEX_JSON.WRITE (
    p_name        IN VARCHAR2,
    p_cursor      IN OUT NOCOPY sys_refcursor );

パラメータ

表21-55 WRITEプロシージャのパラメータ

パラメータ 説明

p_name

属性名。

p_cursor

カーソル。

この例では、部門10および20のJSONオブジェクトが格納されている配列を、オブジェクト・メンバー属性として書き込みます。

DECLARE
  c sys_refcursor;
BEGIN
  open c for select deptno,
                    dname,
                    cursor(select empno,
                                  ename
                             from emp e
                            where e.deptno=d.deptno) emps
               from dept d;
  apex_json.open_object;
  apex_json. write('departments', c);
  apex_json.close_object;
END;
 
{ "departments":[
      {"DEPTNO":10,
       "DNAME":"ACCOUNTING",
       "EMPS":[{"EMPNO":7839,"ENAME":"KING"}]},
      ...
     ,{"DEPTNO":40,"DNAME":"OPERATIONS","EMPS":null}] }