Oracle
 sql >> Baza danych >  >> RDS >> Oracle

dynamicznie przekaż nazwę tabeli w oracle for loop

Możesz użyć kursora typu REF CURSOR. Z Oracle Doc:(zawiera również bindy - nie pytasz o nie...)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Właściwy sposób na ustawienie ORACLE_HOME?

  2. Wydajność SUBSTR na CLOB

  3. Jak policzyć liczbę elementów we wszystkich zmiennych Oracle z tabeli?

  4. Oracle:tabela mutuje

  5. Zapytanie Oracle SQL dla formatu daty