任何人都可以指向正确的语法,以便仅在数据库中当前不存在的情况下才能创建表?Oracle创建表(如果它不存在)
我目前正在编程一个Java GUI,以便连接到Oracle并在我的数据库上执行语句,我在想我是否会将其作为Java约束或SQLPlus约束来实现。
任何人都可以指向正确的语法,以便仅在数据库中当前不存在的情况下才能创建表?Oracle创建表(如果它不存在)
我目前正在编程一个Java GUI,以便连接到Oracle并在我的数据库上执行语句,我在想我是否会将其作为Java约束或SQLPlus约束来实现。
通常,检查表是否存在是没有意义的,因为不应该在运行时创建对象,应用程序应该知道在安装时创建了哪些对象。如果这是安装的一部分,那么您应该知道过程中的任何时刻存在哪些对象,因此您不需要检查表是否已经存在。
如果你真的需要,然而,
ALL_TABLES
或DBA_TABLES
,具体取决于是否创建其他用户拥有的对象和您在数据库中的权限)来检查表是否已经存在谢谢!我们的项目准则有点混乱,所以我只想输入一个与数据库一起工作的典型程序。 – raphnguyen 2013-03-15 16:23:36
临时表怎么样? – 2017-03-23 03:08:32
@JawadLeWywadi - 没有区别。临时表是永久性对象,您可以在创建永久表的同时创建它们,方式相同。 Oracle没有在运行时创建和删除的本地临时表。 – 2017-03-24 16:38:40
您可以通过以下步骤做到这一点 -
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;
希望这可以帮助你。
似乎每次都会删除表格。如果它不存在,什么程序可以创建它,但如果它存在则保留它? – Archie 2014-04-04 03:08:58
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
}
@Archie我想回答你的问题。 @Piyas De对不起,窃取你的代码:)。
只是@Piyas德答案的一点点更新。
BEGIN
BEGIN
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE == -955 THEN
RAISE;
END IF;
END;
END;
如果您尝试创建一个不存在的表,它将会失败。你可以捕捉失败。您还可以尝试从“USER_OBJECTS”或“USER_TABLES”中选择具有该表名称的记录并检查结果。 – Marc 2013-03-15 16:04:59
你可以在你的java代码中做到这一点 – Biswajit 2013-03-15 16:07:03