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

Jak określić klauzulę IN w zapytaniu dynamicznym przy użyciu zmiennej?

Podobnie jak w łączu @Sathya, możesz powiązać varray (wziąłem przykład @Codo):

CREATE OR REPLACE TYPE str_tab_type IS VARRAY(10) OF VARCHAR2(200);
/
DECLARE
  l_str_tab str_tab_type;
  l_count NUMBER;
  v_sql varchar2(3000);
BEGIN
  l_str_tab := str_tab_type();
  l_str_tab.extend(2);
  l_str_tab(1) := 'TABLE';
  l_str_tab(2) := 'INDEX';

  v_sql := 'SELECT COUNT(*) FROM all_objects WHERE object_type IN (SELECT COLUMN_VALUE FROM TABLE(:v_list))';

  execute immediate v_sql into l_count using l_str_tab;

  dbms_output.put_line(l_count);
END;
/

AKTUALIZACJA: pierwsze polecenie można zastąpić:

CREATE OR REPLACE TYPE str_tab_type IS TABLE OF VARCHAR2(200);
    /

następnie zadzwoń:

l_str_tab.extend(1);

za każdym razem, gdy dodasz wartość



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdowanie ostatniego indeksu ciągu w Oracle

  2. SQL*Plus jak zaakceptować zmienną tekstową z monitu?

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

  4. Sprawdzanie informacji o sieci Oracle RAC i adresach IP

  5. Komunikat o błędzie ASP Classic SQL Query, proszę o prawidłową składnię