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

カーソルオラクル内のforループ

    SELECTステートメントでは常にカーソルが開かれます。私の知る限り、FORにカーソルを置く方法はありません。 ループ。

    本当に動的にSELECTステートメントを作成したいように思えます。次のようなものを提案します:

    PROCEDURE p_get_xxx(p_id IN VARCHAR2, p_cur_result OUT SYSREFCURSOR)
    AS
      l_array schema_name.t_array;
      strSelect_statement  VARCHAR2(4000);
    BEGIN
      l_array := split_string(p_id);
    
      -- Set up the basics of the SELECT statement
    
      strSelect_statement := 'SELECT * FROM SOME_TABLE WHERE ID IN (';
    
      FOR i IN l_array.FIRST..l_array.LAST LOOP
        strSelect_statement := strSelect_statement ||
                                 '''' || l_array(i) || ''',';
      END LOOP;
    
      -- Get rid of the unwanted trailing comma
    
      strSelect_statement := SUBSTR(strSelect_statement, 1,
                                      LENGTH(strSelect_statement)-1);
    
      -- Add a right parentheses to close the IN list
    
      strSelect_statement := strSelect_statement || ')';
    
      -- Open the cursor
    
      OPEN p_cur_result FOR strSelect_statement;
    END p_get_xxx;
    

    幸運を祈ります。




    1. クエリでのPHPとMySQLのパフォーマンス(の場合、関数)

    2. jspのパスでデータベースからファイルを取得する

    3. debianのpostgresから古いデータを削除するcronジョブ

    4. postgresのパスからファイル名を分割します