sql >> データベース >  >> RDS >> Oracle

JSON文字列変数に複数の行を選択する方法は?

    Oracle12.2でできることは次のとおりです。 Oracle 19では、json_object(*)を使用すると、少し簡単になる場合があります。 。

    標準のDEPTを使用する SCOTTのテーブル 説明のためのスキーマ:

    declare
      items  json_object_t;
      result clob;
    begin
      select json_object(
               key   'items'
               value json_arrayagg(
                       json_object(
                         key 'deptno' value deptno,
                         key 'dname'  value dname,
                         key 'loc'    value loc
                       )
                     ) format json
             ) 
      into   result
      from   scott.dept;
      items := json_object_t(result);
    -- Check what is stored in items
      dbms_output.put_line('items.stringify = ' || chr(10) || items.stringify);
    end;
    /
    

    stringifyへの呼び出しを含めました json_object_tのコンテンツを表示するメソッド 物体。 ApExはjson_object_tでそれを好むかもしれません データ型-必要なのが文字列だけの場合、resultなので、そのオブジェクトを作成する必要はありません。 すでに必要な文字列です。

    結果は次のようになります:

    items.stringify = 
    {"items":[{"deptno":10,"dname":"ACCOUNTING","loc":"NEW YORK"},{"deptno":20,"dname":"RESEARCH","loc":"DALLAS"},{"deptno":30,"dname":"SALES","loc":"CHICAGO"},{"deptno":40,"dname":"OPERATIONS","loc":"BOSTON"}]}
    
    
    PL/SQL procedure successfully completed.
    

    文字列はきれいにフォーマットされていないことに注意してください-そしてそうであるべきではありません。これは、「送信」側からではなく、受信後の最後のステップとしてのみ実行することです。




    1. Spring Jdbctemplate.update(String sql、obj ... args)を使用して挿入されたIDを取得する方法

    2. サブクエリでINを使用すると、インデックスは使用されません

    3. T-sql、ティック、タイムスタンプ

    4. 合意リストを取得するためのSQLクエリ