Oracle 使用循环比较PL/SQL表中单个列的值

Oracle 使用循环比较PL/SQL表中单个列的值,oracle,plsql,oracle11g,oracle-sqldeveloper,Oracle,Plsql,Oracle11g,Oracle Sqldeveloper,之后,我需要管道行比较的值 如何使用循环比较PLSQL表中单个列的值?之后,我需要管道行比较值。 记录: 在描述列D上执行DML时,主表的描述然后是主表的最近值 --存储在历史记录表中 --opening cursor OPEN V_CUR_HIST FOR V_QUERY; -- loop started LOOP FETCH V_CUR INTO V_REC; EXIT WHEN V_CUR_HIST%

之后,我需要管道行比较的值 如何使用循环比较PLSQL表中单个列的值?之后,我需要管道行比较值。 记录:

在描述列D上执行DML时,主表的描述然后是主表的最近值 --存储在历史记录表中

--opening cursor      
OPEN V_CUR_HIST FOR V_QUERY;
      -- loop started
      LOOP
        FETCH V_CUR 
          INTO V_REC;
        EXIT WHEN V_CUR_HIST%NOTFOUND;

        V_TAB(V_INDEX).TAB_VALUE  := V_REC.TAB_VALUE;--contains value of master & history table
        V_TAB(V_INDEX).TRN_DATE   := V_REC.TRN_DATE;
    --adding increment in v_index
        V_INDEX := V_INDEX + 1;

    END LOOP;
现在我需要的是主值和历史表值的数据比较,输出形式如下:

old_value(history table value)      new_value(master table value)
                                    a
a                                   b
b                                   c
c                                   d 

首先,我认为不需要使用PL/SQL就可以做到这一点。以下查询将以常规SQL表示您的输出:

使用cur_表val,trn_日期为 选择“Z”,系统日期从双 , 历史表格旧值,日期为 选择DECODELEVEL、26、NULL、CHR90-LEVEL、SYSDATE-LEVEL 来自双重 然后按0级连接 对于i IN 1..v_tab.LAST循环 dbms|u output.put_linev|tabi.old|u value | chr9 | v|tabi.new|u value; 端环; 如果结束; 这将以您最初指定的格式输出CHR9制表符,您可能需要调整以获得正确的间距。还有其他方法可以循环收集,但我喜欢这一种。当设置为空时,也可以使用循环退出,或者先用v_选项卡替换1

old_value(history table value)      new_value(master table value)
                                    a
a                                   b
b                                   c
c                                   d