此问题在此处已有答案:
Oracle: If Table Exists(16个回答)
6年前关闭。
我使用的是Oracle 12c,我不感兴趣的是,在删除我的表“CONTILENT”时出现错误,以防它不存在。
是我干的
set echo on
set serveroutput on
alter session set current_schema=WORK_ODI;
set verify off
set pause off
begin
execute immediate 'drop table continent';
exception when others then null;
end;
字符串
这个剧本和我配合得很好。我也用这个脚本:
declare
c int;
begin
select count(*) into c from user_tables where table_name = upper('continent');
if c = 1 then
execute immediate 'drop table continent';
end if;
end;
型
这两个脚本都工作得很好,但我的老板想要像IF EXIT
的东西。任何人都可以帮助我。在这种情况下如何使用IF EXIT?
4条答案
按热度按时间hxzsmxv21#
你可以做两件事
.
字符串
补充说明:的用法
型
可能是危险的,例如,当表为NOT DROPPED时,您也忽略了表空间脱机等错误。
piv4azn72#
对不起,Oracle的drop table语法中没有
if exists
。1szpjjfi3#
字符串
gc0ot86w4#
我也遇到了类似的问题--我需要一种方法来重复DDL脚本而不修改它们。映像以下脚本:
字符串
那么现在我们就出现了这样的情况:表“tab 1”和“tab 2”已成功创建,“tab 3”和“tab 4”缺失。因此,在修复了“tab 3”表的语句之后,我们必须注解掉“tab 1”和“tab 2”的create语句--当处理包含许多DDL和许多bug的大型SQL脚本时,这可能非常烦人。
因此,我提出了以下过程,允许重新运行DDL语句:
型
使用示例:
型
输出量:
型