【问题标题】:default collection type for SQL nested table typeSQL 嵌套表类型的默认集合类型
【发布时间】:2015-04-02 14:30:16
【问题描述】:

我有一个 Oracle 类型,它是一个数字表:

CREATE OR REPLACE TYPE t_number AS TABLE OF number;

现在我想在过程的输入参数中使用该类型,如下所示:

CREATE OR REPLACE PROCEDURE proc1 (pt_numbers_in IN t_number)...

如果参数为空,如何设置默认值?使用 PL/SQL 集合类型,我知道如何创建一个空集合(例如,在包规范中)并将其用作默认值。我必须在这里做同样的事情,还是有更好的方法来使用 SQL 类型的默认变量?我想要这样的东西:

CREATE OR REPLACE PROCEDURE proc1 (pt_numbers_in IN t_number DEFAULT NULL)...

我正在运行 11.2.0.4。

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    如果参数为null,如何设置默认值?

    您必须编写一些代码并检查集合是否为null 集合,如果是,则对其进行初始化。

    如果“默认”值的意思是“我希望这个参数是可选的”,那么只需使用default 子句来初始化一个集合,如下所示:

    create or replace procedure proc1(
      p_numbers_in in t_number default t_number(1,2,3)
    )
    as
    begin
      -- some useful code 
    end;
    

    【讨论】:

      【解决方案2】:

      来自How to Initialize Variables的类似内容

      DECLARE
         t_number_var t_number := t_number(5);  -- initialize
      BEGIN
         IF t_number_var(1) IS NULL THEN 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-11
        • 2017-09-22
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        • 2023-03-29
        • 1970-01-01
        相关资源
        最近更新 更多