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 无法编译2个嵌套表的比较_Oracle_Plsql - Fatal编程技术网

Oracle 无法编译2个嵌套表的比较

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 ...

这里的想法是构建一个嵌套表,然后从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 ...
    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)等价吗?还是你在乎秩序?我不确定“匹配记录”对你意味着什么。