sql >> Databáze >  >> RDS >> Oracle

Jak používat tabulku čísel ve výpisu SELECT INTO

SQL nemůže používat typy deklarované v lokálním rozsahu PL/SQL. Musíte jej definovat v SQL (*) :

SQL> create TYPE array_of_numbers IS TABLE OF NUMBER ;
  2  /

Type created.

SQL> 

Poté pomocí operátoru TABLE() převeďte první kolekci na dílčí dotaz, na který můžete odkazovat pomocí operátoru IN:

SQL> set serveroutput on
SQL> declare
  2      v_list_parentID array_of_numbers;
  3      v_list_pNummer array_of_numbers;
  4  begin
  5      select dbuid bulk collect into v_list_parentID
  6          from v_catalog
  7          where parentid = 1;
  8      dbms_output.put_line('v_list_parentID count = ' || v_list_parentID.count());
  9
 10      select primitivumnummer bulk collect into v_list_pNummer
 11          from cw_felddaten
 12          where katalog in (select * from table( v_list_parentID));
 13
 14      dbms_output.put_line('v_list_pNummer count = ' || v_list_pNummer.count());
 15  end;
 16  /
v_list_parentID count = 4
v_list_pNummer count = 24

PL/SQL procedure successfully completed.

SQL> 

Syntaxe MEMBER OF funguje také. Je to méně psaní, ale nemusí fungovat tak dobře jako operátor TABLE(), pokud má CW_FELDDATEN mnoho řádků.

SQL> declare
  2      v_list_parentID array_of_numbers;
  3      v_list_pNummer array_of_numbers;
  4  begin
  5      select dbuid bulk collect into v_list_parentID
  6          from v_catalog
  7          where parent_id = 1;
  8      dbms_output.put_line('v_list_parentID count = ' || v_list_parentID.count());
  9
 10      select primitivumnummer bulk collect into v_list_pnummer
 11          from cw_felddaten
 12          where katalog member of v_list_parentID;
 13
 14      dbms_output.put_line('v_list_pNummer count = ' || v_list_pNummer.count());
 15  end;
 16  /
v_list_parentID count = 4
v_list_pNummer count = 24

PL/SQL procedure successfully completed.

SQL> 

(*) V 12c můžeme použít typy deklarované ve specifikaci balíčku v SQL.



  1. Jak používat MySQL Found_Rows() v PHP?

  2. Klíčové slovo FROM nebylo nalezeno tam, kde se očekávalo (Oracle SQL)

  3. get error HTTP Status 405 - HTTP metoda GET není podporována touto URL, ale nikdy nebyla použita `get`?

  4. PHP – Odpovídající hledané výrazy mysql_query