尝试检查是否在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; /