在Oracle PL/SQL中的存储过程

3

在存储过程中,是否可能像这样嵌入SQL查询:

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

这个参数列表是否可以在运行时由用户任意初始化为任意数量的字符串值(包括数字和字符串的值)?如果可以,那么如何进行?

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接