我正在尝试在两个表的完全连接上运行游标,但在访问游标中的列时遇到问题。
CREATE TABLE APPLE(
MY_ID VARCHAR(2) NOT NULL,
A_TIMESTAMP TIMESTAMP,
A_NAME VARCHAR(10)
);
CREATE TABLE BANANA(
MY_ID VARCHAR(2) NOT NULL,
B_TIMESTAMP TIMESTAMP,
B_NAME VARCHAR(10)
);
我已经编写了一个完全连接来返回表 A 和 B 中的所有相关行,其中两个时间戳中的任何一个都在未来。即,如果表 APPLE 中的一行将来有时间戳,则从 APPLE 中获取行,并与 MY_ID 上的 BANANA 中的行连接。类似地,如果表 BANANA 中的行将来有时间戳,则从 BANANA 中获取行,并与 MY_ID 上的 APPLE 中的行连接 此完全连接为我工作。
select * from APPLE a full join BANANA b on a.MY_ID = b.MY_ID where
(
a.A_TIMESTAMP > current_timestamp
or b.B_TIMESTAMP > current_timestamp
);
现在我想遍历每个加入的记录并进行一些处理。我能够访问仅存在于一个表中的列,但在尝试访问两个表中相同的列名时出现错误。例如。在这种情况下是身份证。
create or replace
PROCEDURE testProc(someDate IN DATE)
AS
CURSOR c1 IS
select * from APPLE a full join BANANA b on a.MY_ID = b.MY_ID where
(
a.A_TIMESTAMP > current_timestamp
or b.B_TIMESTAMP > current_timestamp
);
BEGIN
FOR rec IN c1
LOOP
DBMS_OUTPUT.PUT_LINE(rec.A_NAME);
DBMS_OUTPUT.PUT_LINE(rec.A_TIMESTAMP);
DBMS_OUTPUT.PUT_LINE(rec.MY_ID);
END LOOP;
END testProc;
编译上述过程时出现此错误:
错误(16,28):PLS-00302:必须声明组件“MY_ID”
而且我不确定如何访问 MY_ID 元素。我相信这会很简单,但我是数据库编程的新手,一直在尝试但找不到正确的方法。任何帮助表示赞赏。谢谢