在Oracle中创建之前,检查表是否存在
发布时间:2020-12-12 13:48:14 所属栏目:百科 来源:网络整理
导读:尝试检查是否在Oracle中创建之前存在表.搜索Stackoverflow和其他人的大部分帖子.查找一些查询,但它对我来说没有效果. IF((SELECT count(*) FROM dba_tables where table_name = 'EMPLOYEE') = 0)THENcreate table EMPLOYEE(ID NUMBER(3),NAME VARCHAR2(30) N
尝试检查是否在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条件的语法,我认为哪个也是写. 如果你想要根据你的方法运行代码,这将是: 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; / (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |