MySQL与oracle报错显示_Oracle中判断表是否存在再删除表避免报错与MySql和SqlServer的不同...
不同數(shù)據(jù)庫中drop a table if it exists的不同:
In MySQL it is pretty easy to drop a table if it exists already. In Oracle and Microsoft’s SQL Server it is a little more complicated. Today I want to present you the solutions for these two DBMS’.
MySQL:
DROP TABLE IF EXISTS [table_name]
Oracle:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE [table_name]';
EXCEPTION WHEN OTHERS THEN NULL;
END;
SQL Server:
IF EXISTS (
SELECT? TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE?? TABLE_NAME = '[table_name]')
DROP TABLE? [table_name]
ORACLE中先判斷表是否存在再新建表一例:
declare
v_exists?number;
begin
--1、任務類型?TASK_TYPE_CD?建表...
select?count(*)?into?v_exists?from?user_tables?where?table_name?='EDW_T99_TASK_TYPE_CD';
ifv_exists?>?0?then
execute?immediate'drop?table?EDW_T99_TASK_TYPE_CD';
endif;
execute?immediate?'
create?table?EDW_T99_TASK_TYPE_CD
(
CODE_CD???VARCHAR2(20)?PRIMARY?KEY,
CODE_DESC?VARCHAR2(100)
)';
execute?immediate'comment?on?table?EDW_T99_TASK_TYPE_CD?is?''任務類型''';
execute?immediate'comment?on?column?EDW_T99_TASK_TYPE_CD.CODE_CD?is?''代碼''';
execute?immediate'comment?on?column?EDW_T99_TASK_TYPE_CD.CODE_DESC?is?''代碼描述''';
--2、買入產(chǎn)品代碼?BUY_TYPE_CD?建表...
select?count(*)?into?v_exists?from?user_tables?where?table_name?='EDW_T99_BUY_TYPE_CD';
ifv_exists?>?0?then
execute?immediate'drop?table?EDW_T99_BUY_TYPE_CD';
endif;
execute?immediate?'
create?table?EDW_T99_BUY_TYPE_CD
(
CODE_CD???VARCHAR2(20)?PRIMARY?KEY,
CODE_DESC?VARCHAR2(100)
)';
execute?immediate'comment?on?table?EDW_T99_BUY_TYPE_CD?is?''買入產(chǎn)品代碼''';
execute?immediate'comment?on?column?EDW_T99_BUY_TYPE_CD.CODE_CD?is?''代碼''';
execute?immediate'comment?on?column?EDW_T99_BUY_TYPE_CD.CODE_DESC?is?''代碼描述''';
end;
/
此例用在數(shù)據(jù)倉庫項目的建T99代碼表腳本方案上;此腳本在方案中用Perl根據(jù)Excel生成。
總結(jié)
以上是生活随笔為你收集整理的MySQL与oracle报错显示_Oracle中判断表是否存在再删除表避免报错与MySql和SqlServer的不同...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 时间周期_数据库三大周期阶段
- 下一篇: mysql 取一行_MySql – 如