在Oracle中创建之前,检查表是否存在

前端之家收集整理的这篇文章主要介绍了在Oracle中创建之前,检查表是否存在前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试检查是否在Oracle中创建之前存在表.搜索Stackoverflow和其他人的大部分帖子.查找一些查询,但它对我来说没有效果.
IF((SELECT count(*) FROM dba_tables where table_name = 'EMPLOYEE') <= 0)
THEN
create table EMPLOYEE
(
ID NUMBER(3),NAME VARCHAR2(30) NOT NULL
)
END IF;

这给我错误

Error: ORA-00900: invalid sql statement
sqlState:  42000
ErrorCode: 900
Position: 1

搜索IF条件的语法,我认为哪个也是写.
请建议我….

正如Rene还评论的,先检查然后创建表是很常见的.
如果你想要根据你的方法运行代码,这将是:
declare
nCount NUMBER;
v_sql LONG;

begin
SELECT count(*) into nCount FROM dba_tables where table_name = 'EMPLOYEE';
IF(nCount <= 0)
THEN
v_sql:='
create table EMPLOYEE
(
ID NUMBER(3),NAME VARCHAR2(30) NOT NULL
)';
execute immediate v_sql;

END IF;
end;

但是我宁愿赶上异常,也可以节省一些不必要的代码

declare
v_sql LONG;
begin

v_sql:='create table EMPLOYEE
  (
  ID NUMBER(3),NAME VARCHAR2(30) NOT NULL
  )';
execute immediate v_sql;

EXCEPTION
    WHEN OTHERS THEN
      IF sqlCODE = -955 THEN
        NULL; -- suppresses ORA-00955 exception
      ELSE
         RAISE;
      END IF;
END; 
/

猜你在找的Oracle相关文章