只有当数据库中当前不存在表时,任何人都可以指出要使用的正确语法来创建表吗?
我目前正在编写 Java GUI 以连接到 Oracle 并在我的数据库上执行语句,我想知道我是否会将其实现为 Java 约束或 SQLPlus 约束。
通常,检查表是否存在没有多大意义,因为不应该在运行时创建对象,并且应用程序应该知道在安装时创建了哪些对象。如果这是安装的一部分,您应该知道在过程中的任何时候存在哪些对象,因此您不需要检查表是否已经存在。
但是,如果你真的需要,
USER_TABLES
(或ALL_TABLES
根据DBA_TABLES
您是否正在创建其他用户拥有的对象以及您在数据库中的权限)来检查表是否已经存在。您可以使用以下程序执行此操作 -
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 我想回答你的问题。@Piyas De 很抱歉窃取了您的代码 :)。
只是对@Piyas De 答案的一点更新。
BEGIN
BEGIN
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
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
}