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

标签 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>

用户可以选择

  • 这些选项都没有,或者
  • 以下选项之一,或
  • 多个选项。

接收过程有这个“签名”,它指定了 owa_util.ident_arr 复选框的数据类型映射:

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

如果用户选中一个或多个选项,一切都会很好。 如果用户未检查任何选项,Oracle 将返回此错误:

PLS-00306: WRONG NUMBER OR TYPE OF ARGUMENTS IN CALL TO 'REPORT'

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

我发现 OWA_UTIL.vc_arr 的默认值为 null_vc_arrOWA_UTIL.ident_arr 的类似 NULL 的默认值是什么?

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

PLS-00201: identified 'NULL_IDENT_ARR' must be declared

最佳答案

声明一个 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;
/

关于oracle - OWA_UTIL.ident_arr 的类似 NULL 的默认值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39132807/

相关文章:

c# - 添加了 OracleCommand 参数但抛出异常

sql - SQL Developer 中的存储过程问题 - 没有 "refreshing" block 中所做的更改

c# - Oracle 在 open() 之后创建自动连接

sql - 如何在 SQL (Oracle) 中执行跨列唯一约束

c++ - 如何使用 OCCI 中的 setDataBuffer 进行数组提取

sql - 使用不同参数多次执行参数化 liquibase 变更集

sql - 按星期几订购日期

oracle - 完全展开 View

sql - 十进制数的 Oracle ceil

oracle - 比较两个日期字段时为 "Literal does not match format string"