任何人都可以指出我使用正确的语法,只有在数据库中当前不存在时才能创建表吗?
我目前正在编程Java GUI以便连接到Oracle并在我的数据库上执行语句,我想知道是否将其实现为Java约束或SQLPlus约束。
答案 0 :(得分:8)
通常,检查表是否存在没有多大意义,因为不应该在运行时创建对象,应用程序应该知道在安装时创建了哪些对象。如果这是安装的一部分,您应该知道过程中任何位置存在哪些对象,因此您不需要检查表是否已存在。
但是,如果你真的需要,
USER_TABLES
(或ALL_TABLES
或DBA_TABLES
,具体取决于您是创建其他用户拥有的对象以及您在数据库中的权限),以检查该表是否已经存在。答案 1 :(得分:1)
您可以使用以下程序执行此操作 -
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;
希望这可以帮助你。
答案 2 :(得分:1)
@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;
答案 3 :(得分:0)
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
}