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 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL/SQL 中的存储过程

oracle SQL语句中怎么样调用存储过程

如何修复存储过程 Oracle PL/SQL 的错误?

如何从 R 调用存储在 Oracle 数据库中的 PL/SQL 过程

Oracle 存储过程 Procedure

赵强老师Oracle存储过程中的out参数