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

Odeslání hodnot oddělených čárkami do klauzule WHERE v uložené proceduře Oracle

V ideálním případě byste místo předávání jediného řetězce složeného z hodnot oddělených čárkami předávali v kolekci. Pokud máte něco jako

CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);

pak byste mohli předat tuto kolekci do své procedury a použít ji v WHERE doložka

CREATE OR REPLACE PROCEDURE procedure_name( p_values IN value_tbl )
AS
  ...
BEGIN
  FOR i IN (SELECT *
              FROM table_name
             WHERE column_name IN (SELECT *
                                     FROM TABLE( p_values )))
  LOOP
    ...
  END LOOP;
END;

Pokud opravdu potřebujete předat řetězec oddělený čárkami, můžete definovat stejný typ kolekce a poté analyzovat řetězec, aby se kolekce naplnila pomocí něčeho jako Tom Kyte's str2tbl funkce . Ale to bude méně efektivní než předání kolekce pro začátek.



  1. Jak povolit rozšíření mysql php v kontejneru docker?

  2. Varování # 1264:Chyba mimo rozsah v mysql

  3. Fulltextové vyhledávání s InnoDB v MySQL

  4. Najít rodiče rekurzivně pomocí Query