Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何检查plsql嵌套表中的null元素?_Oracle_Plsql - Fatal编程技术网

Oracle 如何检查plsql嵌套表中的null元素?

Oracle 如何检查plsql嵌套表中的null元素?,oracle,plsql,Oracle,Plsql,我有一个记录的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为空的记录。我可以不在收集中循环(通过使用某些方法)来完成吗?这可能超出了您想要的范围,我不知道您的数据,但是 将表类型

我有一个记录的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为空的记录。我可以不在收集中循环(通过使用某些方法)来完成吗?

这可能超出了您想要的范围,我不知道您的数据,但是

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

然后你就可以测试了

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

如果您的Oracle版本为12.1或更高版本,则可以使用TABLE()运算符查询集合,但如果是较旧版本,则需要在架构级别定义集合才能正常工作。请看这里:我已经在包级别定义了类型,并尝试了相同的方法。它在12C上对我有效。但不幸的是,我想让它在11g上工作(不幸的是,对于11G,它要么将集合重新定义为架构级别,要么在集合中循环。希望我能为您提供另一个选项。。。