OWA_UTIL.ident_arr的类似NULL的默认值是什么?

时间:2016-08-24 20:50:03

标签: oracle plsql oracle11g

我在Web应用程序中使用PL / SQL。除了其他输入元素之外,其中一个HTML表单还有一个复选框组:

<label><input type="checkbox" name="included_colors" value="red"> Red</label>
<label><input type="checkbox" name="included_colors" value="green"> Green</label>
<label><input type="checkbox" name="included_colors" value="red"> Purple</label>

用户可以选择

  • 这些选项都没有,或
  • 其中一个选项,或
  • 多种选择。

接收程序有#34;签名&#34;,它为复选框指定owa_util.ident_arr数据类型映射:

PROCEDURE report(
    included_colors    IN owa_util.ident_arr,  /*<<<<<<< checkboxes */
    region             IN VARCHAR2 DEFAULT NULL
)

如果用户检查一个或多个选项,一切都很有效。 如果用户没有检查任何选项,Oracle会返回此错误:

  

PLS-00306:呼叫号码或类型的参与者报告&#39;

可以在提交表单中添加一个隐藏字段(即<input type="hidden" name="included_colors" value="ignore_me" />)以规避类似NULL的可能性,但这会产生一些不必要的下游后果。

我看到OWA_UTIL.vc_arr的默认值为null_vc_arr OWA_UTIL.ident_arr的类似NULL的默认值是什么?

我试过null_ident_arr ......没有快乐:

  

PLS-00201:已识别&#39; NULL_IDENT_ARR&#39;必须声明

1 个答案:

答案 0 :(得分:4)

声明类型为owa_util.ident_arr的包变量,并将其用作默认值。

create or replace package test_array as

  null_ident_arr owa_util.ident_arr;

  procedure report(
      included_colors    IN owa_util.ident_arr default null_ident_arr,  /*<<<<<<< checkboxes */
      region             IN VARCHAR2 DEFAULT NULL
  );
end test_array;
/