标识符过程无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标识符过程无效相关的知识,希望对你有一定的参考价值。
我正在编写程序将数据从一个名为'Dev(或testing)'的Db中的表传输到fdw db中的另一个表,我们将拥有存储库表。每个月,即上一个工作日-2,我们将从开发表中清除数据并将其传输到存储库表。我对这项技术和测试程序非常陌生并且遇到了错误
[错误] ORA-00904(12:15):PL / SQL:ORA-00904:“USB”。“BAS2_AGENCY_TO_RISKRATE_REPOS”。“AS_OF_DATE:无效的标识符
CREATE OR REPLACE PROCEDURE USB.Basel2_riskrating
AS
BEGIN
INSERT INTO USB.BAS2_AGENCY_TO_RISKRATE_REPOS@OFSADEV --INSERTS DATA IN REPOSITORY TABLE
SELECT *
FROM USB.BAS2_AGENCY_TO_RISKRATING_TRAN M
WHERE USB.BAS2_AGENCY_TO_RISKRATE_REPOS.AS_OF_DATE != M.AS_OF_DATE ; --COMPARES DATE COLUMN TO REMOVE DUPLICACY
COMMIT;
END Basel2_riskrating;
能帮到我吗?此外,如果在每个月末从USB.BAS2_AGENCY_TO_RISKRATING_TRAN表中擦除数据时,可以指导我使用示例程序代码,这将是非常好的。
正如评论中所建议的那样,使用NOT EXISTS
。无论您是想检查远程表usb.bas2_agency_to_riskrate_repos@ofsadev
中的重复项还是本地版本的副本,都不是celar。使用NOT EXISTS
中的相应表进行比较。
CREATE OR REPLACE PROCEDURE usb.basel2_riskrating AS
BEGIN
INSERT INTO usb.bas2_agency_to_riskrate_repos@ofsadev
SELECT * FROM usb.bas2_agency_to_riskrating_tran m
WHERE NOT EXISTS ( select 1 from
usb.bas2_agency_to_riskrate_repos e --@ofsadev?
where e.as_of_date = m.as_of_date
);
COMMIT; --Try to avoid commits inside procedure, move it to execution section
END basel2_riskrating;
SELECT * FROM USB.BAS2_AGENCY_TO_RISKRATING_TRAN M WHERE USB.BAS2_AGENCY_TO_RISKRATE_REPOS.AS_OF_DATE != M.AS_OF_DATE ;
是错的。你不能对DB运行这样的选择,它没有来自子句的USB.BAS2_AGENCY_TO_RISKRATE_REPOS
以上是关于标识符过程无效的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 存储过程问题 - IN 和 OUT 变量是无效标识符 [关闭]
GLSL:“未声明的标识符‘texture2D’的无效调用”
存储过程 SQL 编译错误中的执行错误:Statement.execute 中的标识符“TEST3”无效