你的這個工作可以寫oracle的過程來解決。
動態sql是你的選擇。
使用游標(cursor)取得表名和字段名,循環,動態拼sql,然後execute immediate v_sql即可。比如你存放表的信息的表是myTab(tabName,colName,dataType,len)
 ...
  v_sql string(1000);
  v_tableName myTab.tabName%type; 
  v_col myTab.colName%type;
  v_dataType myTab.dataType%type;
  v_len myTab.len%type;
  cursor c is select tabName,colName,dataType,len from myTab;
begin
  open c;
  fetch c into v_tableName,v_col,v_dataType,v_len;
  while c%found loop
     v_sql:='create table '||v_tableName||' ...';
     execute immediate;
     fetch c into v_tableName,v_col,v_dataType,v_len;
  end loop;
  commit;
  exception
     when other then
         raise;
  ...

解决方案 »

  1.   

    execute immediate;
    --------->
    execute immediate v_sql;
      

  2.   

    我进oracle9i的Enterprise Management Console时用独立启动后为什么我没有权限在sys中建立表呢,我怎么才能更改我的权限呢?
      

  3.   

    进 Enterprise Management Console 时先要创建资料库
    http://www.oradb.net/err/oem816_01.htm
      

  4.   

    通常有四种连接方式可供选择,这里我只采用了其中两种
    我采用win98下的tomcat
    服务器是winnt的,安装的Oracle
    我的类路径是:D:\tomcat\webapps\ROOT\WEB-INF\classes\yourpackage
    jsp路径:D:\tomcat\webapps\ROOT\
    调用路径:http://127.0.0.1:8080/connOracle.jsp
    (你的实在不行,可以试试我的路径^_^)
    1,使用JDBC_ODBC桥连接
       首先记得在系统数据源里建立一个ODBC连接哦^_^,(可以采用PB或其他程序连接数据库,测试一下这个ODBC建立成功没有)
       接下来写类文件,可以采用以下类文件:
    package yourpackage;   //注意,java的类存储系统和文件系统有关哦:)
    import java.sql.*;
    public class opendb 
    {
      String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
      String sConnStr="jdbc:odbc:yourdb";   //这里的yourdb是你建的ODBC数据原的DNS
      Connection conn=null;
      ResultSet rs=null;
      public opendb()
      {
        try{
          Class.forName(sDBDriver);
        }
        catch(java.lang.ClassNotFoundException e)
        {
          System.err.println("opendb();"+e.getMessage());
        }
      }
      public ResultSet executeQuery(String sql)
      {
        rs=null;
        try{
          conn=DriverManager.getConnection(sConnStr,"username","password");   //注意这里的数据库用户名和密码一定要根据实际情况设置
          Statement stmt=conn.createStatement();
          rs=stmt.executeQuery(sql);
        }
        catch(SQLException ex){
          System.err.println("aq.executeQuery:"+ex.getMessage());
        }
        return rs;
      }
    }
       这种方法比较简单,通常较容易实现,但据说存在漏洞(本人没有做深层次研究),且不适于大型数据库的大规模的数据流量,故尝试直接采用JDBC连接^_^2,直接使用JDBC连接数据库
    首先把类文件给你,看看吧,基本上差不多,就是连接参数的设置问题:
    package yourpackage;
    import java.sql.*;
    public class openOracle
    {
      String sDBDriver="oracle.jdbc.driver.OracleDriver";   //不要以为这个驱动器是系统已有的,我也是后来才把它加进去的,关键哦
      String sConnStr="jdbc:oracle:thin:@server:1521:yourservername";   //要注意啦,server为你用的数据库所在的服务器的名称,一般Oracle的端口都采用1521,当然,你也可以咨询一下你们的系统管理员^_^,yourservername是你用的数据库的服务名
      Connection conn=null;
      ResultSet rs=null;
      public openOracle()
      {
        try{
          Class.forName(sDBDriver);
        }
        catch(java.lang.ClassNotFoundException e)
        {
          System.err.println("openOracle();"+e.getMessage());
        }
      }
      public ResultSet executeQuery(String sql)
      {
        rs=null;
        try{
          conn=DriverManager.getConnection(sConnStr,"username","password"); 
          Statement stmt=conn.createStatement();
          rs=stmt.executeQuery(sql);
        }
        catch(SQLException ex){
          System.err.println("aq.executeQuery:"+ex.getMessage());
        }
        return rs;
      }
    }
       编译成功,但用浏览器执行,出错 :(,总是一大堆不认识的系统的类列了一片,这时我发现启动tomcat时弹出的DOS窗口抛出这样两个错误(是我的catch捕获的)
    openOracle():oracle.jdbc.odbc.OracleDriver
    aq.executeQuery: No suitable driver
       由此可以推测是驱动程序找不到,通过请教网友,发现缺少的从classes12.zip文件里可以找到。通过搜索我在我的D:\Oracle\jdbc\lib里找到这个文件。解压,通过各种尝试,以及相关推理分析,我把解压后的其中的Oracle文件夹放到D:\tomcat\lib下,运行程序,成功了,可以看到令人兴奋的“连接成功”的结果了^_^
       以上这两种方法,你都可以采用下面这个文件进行测试,只需修改相应调用的类文件就可以了。^_^
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page language="java" import="java.sql.*"%>
    <jsp:useBean id="db" scope="page" class="yourpackage.openOracle"/>
    <%
      String sql="select * from user ";  //这里,你可以随便找你的一个表进行简单查询,只要能产生结果就可以(记得要找个有数据的表哦:P)
      ResultSet rs=db.executeQuery(sql);
      String mess="";
      if(rs.next())
      {
        mess="连接成功!";
      }
      else
      {
        mess="连接失败!";
      }
      rs.close();
    %>
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
    <TITLE>数据库连接测试</TITLE>
    </HEAD>
    <BODY>
    <H2>
    数据库连接测试结果:
    <%=mess %>
    </H2>
    <P></P>
    </BODY>
    </HTML> 
      

  5.   

    我是在我的机子上装的oracle9i,也是用我机子上的jbuilder连oracle,我是用的以下语句:
      String sConnStr="  jdbc:oracle:thin:@hostname:1521:ORCL" 
      user=             system
      password=         **
    为什么我连不上呢?我的oracle的驱动应该装上去了,因为那一栏变黑了。
    有一点我还是不明白,因为oracle中有很多的数据库,用JDBC连oracle数据库怎么才能连上我所想要的数据库呢?譬如说我在oracle中的system中建立了一张表table1(它的名称应该是"SYSTEM"."table1"  吧?),那我怎么连接到这张表呢?还有我要在jbuilder中写语句建立表,我怎么才能把它建在我想要的位置呢?
      

  6.   

    根什么Tomcat没关系Java如何创建数据表,以及创建/访问ORACLE数据库存储过程http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=106&id=3889
      

  7.   

    前面的问题大部分已经解决,现在又有新的问题。
    问题1:当我用jubilder在oracle中创建表(譬如table1)时,我怎么才能判断这个表(table1)已经存在呢?是不是用异常语句能解决呢,如:
           try{myStatement.executeUpdate("create table table1("
                                     + "APPTABLEID NUMBER(10),"
                                     +" ILEVEL NUMBER(10),SAPPIDXNAME NUMBER(10))");
             }catch(SQLException e){
               System.out.println("该表格已经创建!");
            }
    这种方法应该不行吧,有没有表格已经创建的异常呢?请各位仁兄指点!  
      

  8.   

    查询一个表是否已经存在,用
    select * from user_objects where object_name='table1'
    如果有记录,说明表已经存在
      

  9.   

    请问select * from user_objects where object_name='table1'其中的user_objects 是所使用的连接数据库的用户名字吗?object_name是什么呢?
      

  10.   

    用你的java程序去打开这个数据集:
    select * from user_tables where table_name='table1'如果有记录说明该表已经创建了,没有就是没有该表
      

  11.   

    那连在sysbase中是怎么判断的呢?