Oracle Create Table如果不存在
任何人都可以指出我使用正确的语法,只有在数据库中当前不存在时才能创建表吗?
我正在编程Java GUI以便连接到Oracle并在我的数据库上执行语句,我想知道我是否将其实现为Java约束或SQLPlus约束。
通常,检查表是否存在没有多大意义,因为不应在运行时创建对象,应用程序应该知道在安装时创建了哪些对象。 如果这是安装的一部分,您应该知道过程中任何位置存在哪些对象,因此您不需要检查表是否已存在。
但是,如果你真的需要,
- 您可以尝试创建表并捕获`ORA-00955:名称已被现有对象使用“exception。
- 您可以查询
USER_TABLES
(或ALL_TABLES
或DBA_TABLES
具体取决于您是否正在创建其他用户拥有的对象以及您在数据库中的权限)以检查该表是否已存在。 - 您可以尝试在创建表之前删除该表,并捕获“ORA-00942:表或视图不存在”exception(如果不存在)。
您可以使用以下程序执行此操作 –
BEGIN BEGIN EXECUTE IMMEDIATE 'DROP TABLE <>'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; EXECUTE IMMEDIATE '< >'; END;
希望这可以帮到你。
@Archie我想回答你的问题。 @Piyas De很抱歉偷你的代码:)。
只是@Piyas De回复的一点点更新。
BEGIN BEGIN EXECUTE IMMEDIATE '<>'; EXCEPTION WHEN OTHERS THEN IF SQLCODE == -955 THEN RAISE; END IF; END; END;
try { // insert query for insert new record in your table } catch(Exception Ex) { //if it throw exception then catch it int s=Ex.getErrorCode(); // check it for 903 error //903 is table not existing error in oracle11g // then create your new table here otherwise if table present then record get stored in database }