【发布时间】:2011-12-17 11:49:51
【问题描述】:
2 个单独的问题。
-
我正在使用此脚本删除表 [已解决]
BEGIN EXECUTE IMMEDIATE 'DROP TABLE_NAME'; DBMS_OUTPUT.PUT_LINE ('Global table TABLE_NAME Dropped'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('Global table TABLE_NAME Doesn''t exist.'); END; /
无论如何我可以区分表“不存在”还是它正在其他会话中使用(在这种情况下它会被锁定并且无法删除)。我不确定是否可以看到该表存在于 user_tables 中。我不完全了解权限。
我现在已经添加了这段代码
WHEN OTHERS THEN
i_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1, 64);
if i_code = -942 THEN
DBMS_OUTPUT.PUT_LINE ('TABLE_NAME doesn''t exist. Script will continue to create it');
ELSE
DBMS_OUTPUT.PUT_LINE ('Error dropping temporary table. The error code is ' || i_code || '- ' || v_errm);
END IF ;
2。我在每个过程的末尾看到 . 像这样
END PROCEDURE_NAME;
.
/
sho err;
我只是不明白为什么 . 在这里。是语法还是什么?
【问题讨论】:
-
表真的是全局临时表吗? (
create global temporary table ....) 如果是这样,你为什么要放弃它?这是安装脚本的一部分吗?如果没有,也许全局临时表可以满足您的需求,而无需删除它。 -
好吧,我们遇到了“已经存在”的问题,不知何故,它没有从 productino 环境中得到确认,表的状态是什么。此表不是安装脚本的一部分,它是单独过程的一部分。
-
我不明白,你为什么遇到一个已经存在的全局临时表问题。该表应该已经存在,并且代码只是使用(插入、删除、更新等)它。
-
@Nader 的回答对我有用
标签: oracle plsql ddl temp-tables