SQL嵌套表类型的默认集合类型

时间:2015-04-02 14:30:16

标签: oracle plsql

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

CREATE OR REPLACE TYPE t_number AS TABLE OF number;

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

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

如果参数为null,如何设置默认值?使用PL / SQL集合类型,我知道如何创建一个空集合(例如,包规范)并将其用作默认值。我是否必须在此处执行相同的操作,或者是否有更好的方法来使用SQL类型的默认变量?我想这样的事情:

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

我正在运行11.2.0.4。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

来自How to Initialize Variables

的类似内容
DECLARE
   t_number_var t_number := t_number(5);  -- initialize
BEGIN
   IF t_number_var(1) IS NULL THEN