sql >> Database >  >> RDS >> Oracle

Door komma's gescheiden waarden verzenden naar de WHERE-component in de opgeslagen procedure van Oracle

Idealiter zou u, in plaats van een enkele tekenreeks die is samengesteld uit door komma's gescheiden waarden, een verzameling door te geven. Als je iets hebt als

CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);

dan zou je die verzameling in je procedure kunnen opnemen en gebruiken in een WHERE clausule

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;

Als u echt een door komma's gescheiden tekenreeks moet invoeren, kunt u hetzelfde verzamelingstype definiëren en de tekenreeks vervolgens ontleden om de verzameling te vullen met iets als Tom Kyte's str2tbl functie . Maar dat zal minder efficiënt zijn dan om te beginnen een collectie doorgeven.



  1. Verbinding maken met SQL Server 2008 met TCP/IP

  2. De kosten van uw databasehosting verlagen:DigitalOcean vs. AWS vs. Azure

  3. FOUT 2068 (HY000):LOAD DATA LOCAL INFILE-bestandsverzoek afgewezen vanwege toegangsbeperkingen

  4. FOUT 1049 (42000):Onbekende database