2012-01-31 4 views
3

Можно ли иметь SQL-запрос, как это встроенный где-то в хранимой процедуре:хранимой процедуры в Oracle PL/SQL

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

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

ответ

7

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

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')); 
+0

Спасибо u @PeterLang, предположим, что это должно работать !!! Отправляется обратно, когда это будет :) – Shylock77

+0

Хороший @PeterLang .Guys n gals это работает! – Shylock77

Смежные вопросы