Oracle 无法编译2个嵌套表的比较
这里的想法是构建一个嵌套表,然后从PL/SQL查询加载第二个嵌套表,并一次性比较这两个表:Oracle 无法编译2个嵌套表的比较,oracle,plsql,Oracle,Plsql,这里的想法是构建一个嵌套表,然后从PL/SQL查询加载第二个嵌套表,并一次性比较这两个表: Package Body ... Procedure Definition ... Cursor cX is select * from some_table; Type tcX is table of cX%ROWTYPE; rsOldData tCX; rsNewData tCX; ... load rsNewData with data ...
Package Body ...
Procedure Definition ...
Cursor cX is
select * from some_table;
Type tcX is table of cX%ROWTYPE;
rsOldData tCX;
rsNewData tCX;
... load rsNewData with data ...
Open cX;
Fetch cX bulk collect into rsOldData;
close cX;
if rsOldData != rsNewData then
... do something ...
end if;
bla, bla, bla, end everything else
问题是,两个嵌套表的比较将无法编译。我试过“等同”和“不等同”,所以这不是符号学
我将尝试将该类型创建为独立类型,看看这是否会产生影响。以下是答案。根据“使用PL/SQL集合和SQL语句”: 比较记录 无法测试记录是否为空或比较是否相等或不相等
我想这很难理解。你说你的代码“不会编译”,但你没有告诉我们编译错误,错误是在哪一行抛出的,等等。没有这些,很难猜测错误。明确地说,你认为“平等”是什么?你是在讨论基于集合的相等性(即集合(1,2,3)等价于集合(3,2,1),因为它们包含相同的元素),还是要考虑集合中元素的索引?是否要忽略重复项?可以使用集合操作,但集合必须是数据库对象,这样才能像查询表一样查询它们。抱歉-错误是错误:PLS-00306:调用“tcX”时参数的数目或类型错误两个嵌套表需要相等,以便“a”中的每个记录在“B”中都有一个匹配的记录.您是说要进行基于集合的比较吗?那么集合(1,2,3)与集合(3,2,1)等价吗?还是你在乎秩序?我不确定“匹配记录”对你意味着什么。