【问题标题】:Stored procedure in Oracle PL/SQLOracle PL/SQL 中的存储过程
【发布时间】:2012-01-31 16:29:18
【问题描述】:

是否可以在存储过程的某处嵌入这样的 sql 查询:

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

这个参数列表是否可以在运行时由用户自行决定使用任意数量的字符串值(运行时字符串的数量和值)来初始化?如果是,那它是怎么做的?

【问题讨论】:

    标签: oracle stored-procedures plsql


    【解决方案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' ) );
    

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 2017-04-13
      • 2021-04-17
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多