sql - 注册:程序出错
问题描述
以下是我的程序给出的错误,请检查并确认。
create or replace PROCEDURE CLEANUP_rec
IS
BEGIN
EXECUTE IMMEDIATE 'create table TEMP_JOB_ID_FROM_JOB_DOC_1119 as select JOB_ID, last_update_time_utc, status from J_DOC where
LAST_UPDATE_TIME_UTC <= TRUNC(SYSDATE) - 90 and status=''Sent''';
delete from HUB_SIG where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119);
delete from J_DOC
where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119);
EXECUTE IMMEDIATE 'RENAME TABLE TEMP_JOB_ID_FROM_JOB_DOC_1119 TO TEMP_ID_STAT_TIME_FRM_JOB_DOC';
END;
给出以下错误
Project: C:\Users\bc8807\AppData\Roaming\SQL Developer\system4.0.1.14.48\o.sqldeveloper.12.2.0.14.48\projects\IdeConnections#database_zltv9883.jpr
t1c3d231_db_connection
Error(10,1): PL/SQL: SQL Statement ignored
Error(11,8): PL/SQL: ORA-00942: table or view does not exist
Error(13,3): PL/SQL: SQL Statement ignored
Error(15,8): PL/SQL: ORA-00942: table or view does not exist
请建议我们如何解决这个问题。
所以请确认以下是正确的:
create or replace PROCEDURE CLEANUP_AUTOMATION
IS
BEGIN
EXECUTE IMMEDIATE 'create table TEMP_JOB_ID_FROM_JOB_DOC_1119 as select JOB_ID, last_update_time_utc, status from J_DOC where
LAST_UPDATE_TIME_UTC <= TRUNC(SYSDATE) - 90 and status=''Sent''';
execute immediate 'delete from HUB_SIG where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119)';
execute immediate 'delete from J_DOC
where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119)';
EXECUTE IMMEDIATE 'RENAME TABLE TEMP_JOB_ID_FROM_JOB_DOC_1119 TO TEMP_ID_STAT_TIME_FRM_JOB_DOC';
END;
下一步将是在程序内部使它们自动化。我们必须获取日期作为输入并在重命名表时传递它(RENAME TEMP_JOB_ID_FROM_JOB_DOC_1119 TO TEMP_ID_STAT_TIME_FRM_JOB_DOC)
并在 DBMS_SCHEDULER 中安排此过程在每晚太平洋标准时间晚上 10 点运行。
请建议
解决方案
这里的问题是您正在尝试编译一个过程,从而检查所有代码是否正确,它使用了一个在编译时不存在的表。
无论execute immediate
字符串中有什么,都不能编写使用不存在的东西的语句。
如果你严格需要在运行时创建这个表,使用它然后重命名它,你需要对所有使用你的表的语句使用动态 SQL:
execute immediate 'delete from HUB_SIG where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119)';
execute immediate 'delete from J_DOC
where JOB_id IN ( SELECT JOB_ID
FROM TEMP_JOB_ID_FROM_JOB_DOC_1119)';
推荐阅读
- php - Yii2 创建漂亮的 URL,例如 /index.php/viewName/actionName/var1/value1/var2/value2
- java - 在 Java 中,您如何称呼这种模式/习语?
- bootstrap-4 - 我如何对齐 .pull-right 以根据屏幕宽度在引导程序中对齐文本
- java - 查询后在 Java 中访问 Neo4j 列表
- java - JAVA FX - 时间线动画(在动画期间找到某个 x、y 点)
- python - 带有 python 的感知器 - 出现 TypeError 但为什么?
- git - Git拉,合并更改是工作树?
- php - 附加元素上的 autocomplete() 函数
- android - Android Studio 只为多模块项目中没有模块依赖的模块生成 R 文件
- sql-server - 所需的字符编码转换列表:windows-1252 到 UTF-8