Oracle PL/SQL 中的存储过程
Posted
技术标签:
【中文标题】Oracle PL/SQL 中的存储过程【英文标题】:Stored procedure in Oracle PL/SQL 【发布时间】:2012-01-31 16:29:18 【问题描述】:是否可以在存储过程的某处嵌入这样的 sql 查询:
Select id, val from prmtable where id in ('app','config');
这个参数列表是否可以在运行时由用户自行决定使用任意数量的字符串值(运行时字符串的数量和值)来初始化?如果是,那它是怎么做的?
【问题讨论】:
【参考方案1】:如果你需要动态数量的参数,你可以创建一个类型
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' ) );
【讨论】:
以上是关于Oracle PL/SQL 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章