【问题标题】:How to check null element in a plsql nested table?如何检查 plsql 嵌套表中的空元素?
【发布时间】:2016-01-28 15:22:25
【问题描述】:

我有一个记录的 PLSQL 嵌套表。

type rec is record
(a number,
 b number);



type tab is table of rec;

v_tab tab;

我正在从批量查询中填充此集合;

select x,y bulk collect into v_tab from testtable;

现在我需要查找 v_tab 集合中是否有 v_tab.a 为空的记录。我可以在不循环收集的情况下(通过使用某些方法)吗?

【问题讨论】:

  • 如果您的 Oracle 版本是 12.1 或更高版本,您可以使用 TABLE() 运算符来查询您的集合,但如果是旧版本,那么您的集合需要在架构级别为此定义去工作。见这里:stevenfeuersteinonplsql.blogspot.ca/2015/04/…
  • 我在包级别定义了类型并尝试了同样的事情。它在 12C 上为我工作。但不幸的是,我想让它在 11g 上运行。 :(
  • 不幸的是,对于 11G,它要么将集合重新定义到架构级别,要么循环遍历集合。希望我有另一个选择...

标签: oracle plsql


【解决方案1】:

这可能超出了你想去的范围,我不知道你的数据,但是……

将表类型更改为 INDEX BY 并使用 NVL(A, -999) 作为索引怎么样?

然后你可以测试

IF v_tab.EXISTS(-999)
THEN
    -- Handle null value
    ...
END IF;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多