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

Wykonywanie zapytań Dynamic Sql w Oracle

Dynamiczny Ciąg musi być ujęty w „Cytaty pojedyncze”

OPEN OUT_CUR FOR
     'SELECT * FROM MYTABLE WHERE ID '|| DYN_QUERY;

EXECUTE IMMEDIATE umożliwia wynik wielowierszowy, jeśli używasz BULK COLLECT

Przykład:

DECLARE
  TYPE myarray IS TABLE OF VARCHAR2(100);
  v_array myarray;
BEGIN
  EXECUTE IMMEDIATE 'select ''x'' from dual union all select ''y'' from dual'
    BULK COLLECT INTO v_array;

  --Or you could use the alternative quoting mechanism to avoid doubling quotation marks.
  --EXECUTE IMMEDIATE q'[select 'x' from dual union all select 'y' from dual]'
  --  BULK COLLECT INTO v_array;

  FOR i IN 1..v_array.count
  LOOP
    DBMS_OUTPUT.PUT_LINE(v_array(i));
  END LOOP;
END;

EXECUTE IMMEDIATE za pomocą zmiennych powiązań;

String := 'SELECT * FROM EMP WHERE name = :name AND age = :age AND :name <> ''Mahesh''';

EXECUTE IMMEDIATE String USING 'Mahi',21,'Mahi';
<OR>
EXECUTE IMMEDIATE String USING proc_variable1,proc_variable2,proc_variable1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekazać cały wiersz (w SQL, nie PL/SQL) do funkcji przechowywanej?

  2. java - przekazywanie tablicy w procedurze składowanej Oracle

  3. Sekwencja Oracle, ale potem w MS SQL Server

  4. Szyfrowanie Oracle Advanced Secuity z konfiguracją Spring JDBC xml

  5. Zapytanie, aby znaleźć pełne skany tabeli w Oracle