Oracle 使用循环比较PL/SQL表中单个列的值
之后,我需要管道行比较的值 如何使用循环比较PLSQL表中单个列的值?之后,我需要管道行比较值。 记录: 在描述列D上执行DML时,主表的描述然后是主表的最近值 --存储在历史记录表中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%
--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