什么是仅在第一次运行项目时在sql中创建表的代码?

时间:2015-01-04 04:18:48

标签: sql oracle jsp jdbc

大家好,

我想使用jsp,servlet和jdbc等创建一个Web应用程序。

它只是创建一个名为student的表,包含各种字段作为数据库中学生的信息,不同的页面执行不同的查询任务。

问题是我想创建一个war文件来将这个应用程序分发给我的客户端。

当我编写一个sql查询来在我的jsp页面中创建一个表时,每当我运行这个项目时,它都会尝试创建一个新表。

这里我希望它只在用户第一次运行时创建一个表。所以当我将war文件分发给我的客户端时,在第一次运行时它会创建一个学生名表并执行所需的查询。将来运行它只执行其他查询但不再创建表。

我需要您的宝贵指导和概述来解决这个问题。任何类型的帮助将不胜感激。     "感谢"

1 个答案:

答案 0 :(得分:1)

Oracle中,解决方法是将其包装在匿名BEGIN-END块中。 EXCEPTION块只允许table already exists error

BEGIN
   EXECUTE IMMEDIATE 'CREATE TABLE...

EXCEPTION
    WHEN OTHERS THEN
      IF SQLCODE = -955 THEN
        NULL; -- ignore the ORA-00955 error
      ELSE
         RAISE;
      END IF;
END; 
/

这是一种优选方式。另一种方法是在data dictionary视图dba_tables中手动检查表格是否存在。

SELECT count(*) 
   INTO variable_count 
  FROM dba_tables 
 WHERE table_name = 'table_name';

所以,

IF variable_count = 0 THEN EXECUTE IMMEDIATE CREATE TABLE ...