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

PL/SQLはカスタムクエリからSELECT文の列名を抽出します

    DBMS_SQL.parseを使用してステートメントを解析できます。 DBMS_SQL.describe_columnsで列を取得します :

    DECLARE
      v_SQL VARCHAR2(32767 CHAR);
      v_Result VARCHAR2(32767 CHAR) := '';
      l_cursor        PLS_INTEGER;
      l_col_cnt       PLS_INTEGER;
      i               PLS_INTEGER;
      l_desc_tab      DBMS_SQL.desc_tab;
    BEGIN 
      v_SQL := q'[SELECT 1 as "MY_NUMBER", 'z' as "MY_CHAR" from dual]';
      l_cursor := DBMS_SQL.open_cursor;
      DBMS_SQL.parse(l_cursor, v_SQL, DBMS_SQL.native);
      DBMS_SQL.describe_columns(l_cursor, l_col_cnt, l_desc_tab);
    
      FOR i IN 1 .. l_col_cnt LOOP
        v_Result := v_Result ||' ' || l_desc_tab(i).col_name;
      END LOOP;
    
      DBMS_OUTPUT.put_line('v_Result: ' || v_Result);
    
    END;
    /
    



    1. SQLServerで時間フィールドを合計する方法

    2. OracleConnectionsとVS2012

    3. 行Yから始まるX行を選択します

    4. 複数の名前付きパラメーターを持つPDObindParam()