Хранимая процедура в Oracle PL / SQL - PullRequest
3 голосов
/ 31 января 2012

Возможно ли иметь SQL-запрос, подобный этому, встроенный где-нибудь в хранимую процедуру:

Select id, val from prmtable where id in ('app','config');

Может ли этот список параметров инициализироваться во время выполнения с любым числом строковых значений (как числом, так и значениямистроки во время выполнения) на усмотрение пользователя?Если да, то как это сделать?

1 Ответ

7 голосов
/ 31 января 2012

Если вам нужно динамическое число параметров, вы можете создать тип

CREATE TYPE my_type AS TABLE OF VARCHAR2(128);

и передать эту таблицу в качестве параметра для вашей процедуры

CREATE OR REPLACE PROCEDURE my_procedure( vals IN my_type ) AS
BEGIN
  FOR c IN (
    SELECT dummy
      FROM dual
     WHERE dummy IN ( SELECT column_value FROM TABLE( vals ) )
  ) LOOP
    dbms_output.put_line( c.dummy );
  END LOOP;
END my_procedure;

Затем эту процедуру можно выполнитькак это:

EXEC my_procedure( NEW my_type( 'X', 'Y' ) );
...