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

Oracleのforループでテーブル名を動的に渡す

    REF CURSORタイプのカーソルを使用できます。OracleDocから:(バインドも含まれています。バインドは要求されません...)

    CREATE OR REPLACE PROCEDURE query_invoice(
           month VARCHAR2, 
           year VARCHAR2) IS
        TYPE cur_typ IS REF CURSOR;
        c cur_typ;
        query_str VARCHAR2(200);
        inv_num NUMBER;
        inv_cust VARCHAR2(20);
        inv_amt NUMBER;
    BEGIN
        query_str := 'SELECT num, cust, amt FROM inv_' || month ||'_'|| year 
          || ' WHERE invnum = :id';
        OPEN c FOR query_str USING inv_num;
        LOOP
            FETCH c INTO inv_num, inv_cust, inv_amt;
            EXIT WHEN c%NOTFOUND;
            -- process row here
        END LOOP;
        CLOSE c;
    END;
    /
    



    1. アーランとそのヒープメモリの消費

    2. SQL Serverに入力された順序で並べ替える方法は?

    3. 暗黙のDEFAULT値を持つTIMESTAMPが非推奨であるため、Mysql 5.6サーバーを起動できませんエラー?

    4. Windows7のMysqlタイムゾーンは更新されていません