2012-01-31 214 views
3

是否有可能有這樣一個存儲過程中的某處嵌入的SQL查詢:存儲過程/ 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

謝謝你@PeterLang,猜這應該是工作!當它發佈後會回發:) – Shylock77 2012-01-31 17:16:08

+0

好@PeterLang .Guys n gals這個工程! – Shylock77 2012-02-01 09:14:59