Java Oracle创建不存在的表
有人能告诉我,只有在数据库中当前不存在表时,才能使用正确的语法来创建表吗Java Oracle创建不存在的表,java,database,oracle10g,sqlplus,Java,Database,Oracle10g,Sqlplus,有人能告诉我,只有在数据库中当前不存在表时,才能使用正确的语法来创建表吗 我目前正在编写一个Java GUI,以便连接到Oracle并在我的数据库上执行语句,我想知道是将其实现为Java约束还是SQLPlus约束。通常,检查表是否存在没有多大意义,因为不应该在运行时创建对象,应用程序应该知道在安装时创建了哪些对象。如果这是安装的一部分,那么您应该知道在过程中的任何时候都存在哪些对象,因此不需要检查表是否已经存在 但是,如果你真的需要 您可以尝试创建表并捕获“ORA-00955:名称已被现有对象
我目前正在编写一个Java GUI,以便连接到Oracle并在我的数据库上执行语句,我想知道是将其实现为Java约束还是SQLPlus约束。通常,检查表是否存在没有多大意义,因为不应该在运行时创建对象,应用程序应该知道在安装时创建了哪些对象。如果这是安装的一部分,那么您应该知道在过程中的任何时候都存在哪些对象,因此不需要检查表是否已经存在 但是,如果你真的需要
- 您可以尝试创建表并捕获“ORA-00955:名称已被现有对象使用”异常
- 您可以查询
(或USER\u表
或ALL\u表
,具体取决于您是否正在创建其他用户拥有的对象以及您在数据库中的权限),以查看该表是否已存在DBA\u表
- 您可以尝试在创建表之前删除该表,并捕获“ORA-00942:表或视图不存在”异常(如果不存在)
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE <<Your Table Name>>';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
END;
开始
开始
执行立即“删除表”;
例外情况
当其他人
如果SQLCODE!=-那么
提高;
如果结束;
结束;
立即执行“”;
结束;
希望这能对你有所帮助。@Archie我想回答你的问题。
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
}
@Piyas De抱歉偷了你的代码:)
只是@Piyas De answer的一点更新
BEGIN
BEGIN
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE == -955 THEN
RAISE;
END IF;
END;
END;
开始
开始
立即执行“”;
例外情况
当其他人
如果SQLCODE==-955,则
提高;
如果结束;
结束;
结束;
如果您试图创建一个不存在的表,它将失败。你可以抓住那次失败。您还可以尝试从USER\u OBJECTS
或USER\u TABLES
中选择具有该表名的记录,并检查结果。您可以在java代码中执行此操作谢谢!我们的项目指导方针有点混乱,所以我只想输入一个与数据库一起工作的程序的典型内容。临时表怎么样?@JawadLeWywadi-没有区别。临时表是永久对象,您可以在创建永久表的同时以相同的方式创建它们。Oracle没有在运行时创建和删除的本地临时表。这似乎每次都会删除该表。如果它不存在,什么过程会创建它,但如果它存在,则不进行创建?