原来做过sql server的,它都可以创建一个事务,这个事务里面可以做很多操作,包括建表,触发器等。都可以实现事务回滚的,oracle没理由在这点上面不支持的呀!

解决方案 »

  1.   

    同意wanghai(汪海)說的DDL默認就commit了,除非用drop來刪除建立的表了
    要不開始設置自動提交為OFF
    即為sql>set autocommit off關閉自動提交功能,或為on ,immediate打開。
      

  2.   

    set autocommit off了,还是立即提交的呀。
      

  3.   

    DLL是不能回滚的,你可以自己在失败后用DROP
      

  4.   

    如果自己drop的话,我还要去解析具体创建了哪些表,函数,过程等。
    因为执行的时候就是从sql脚本中读取执行的。
    感觉编程去自动drop创建过的对象,思路不怎么清晰,谁给点意见?
      

  5.   

    既然有创建的脚本,应该很容易整理一个drop的脚本吧.
      

  6.   

    脚本没有区分创建还是drop,我说的是动态去drop,而不是手工在编写一个drop脚本。
      

  7.   

    如果创建错误,你可以断开连接,然后将COMMITONDISCONNECT的DBPARM参数设置为"NO",不知道是否可行,建议一下
      

  8.   

    请使用 create schema CREATE SCHEMA 
    Purpose 
    Use the CREATE SCHEMA to create multiple tables and views and perform multiple grants in a single transaction. To execute a CREATE SCHEMA statement, Oracle executes each included statement. If all statements execute successfully, Oracle commits the transaction. If any statement results in an error, Oracle rolls back all the statements. 
    --------------------------------------------------------------------------------Note: This statement does not actually create a schema. Oracle automatically creates a schema when you create a user (see CREATE USER). This statement lets you populate your schema with tables and views and grant privileges on those objects without having to issue multiple SQL statements in multiple transactions.  --------------------------------------------------------------------------------
     
     
    Prerequisites 
    The CREATE SCHEMA statement can include CREATE TABLE, CREATE VIEW, and GRANT statements. To issue a CREATE SCHEMA statement, you must have the privileges necessary to issue the included statements. Syntax 
    Keyword and Parameters
    schema
    Specify the name of the schema. The schema name must be the same as your Oracle username. create_table_statement
    Specify a CREATE TABLE statement to be issued as part of this CREATE SCHEMA statement. Do not end this statement with a semicolon (or other terminator character). See Also: CREATE TABLE  
     
     
    create_view_statement
    Specify a CREATE VIEW statement to be issued as part of this CREATE SCHEMA statement. Do not end this statement with a semicolon (or other terminator character). See Also: CREATE VIEW  
     
     
    grant_statement
    Specify a GRANT object_privileges statement to be issued as part of this CREATE SCHEMA statement. Do not end this statement with a semicolon (or other terminator character). See Also: GRANT  
     
     
    The CREATE SCHEMA statement supports the syntax of these statements only as defined by standard SQL, rather than the complete syntax supported by Oracle. The order in which you list the CREATE TABLE, CREATE VIEW, and GRANT statements is unimportant. The statements within a CREATE SCHEMA statement can reference existing objects or objects you create in other statements within the same CREATE SCHEMA statement. Restriction: The syntax of the parallel_clause is allowed for a CREATE TABLE statement in CREATE SCHEMA, but parallelism is not used when creating the objects. See Also: the parallel_clause of CREATE TABLE   
     
     
    Example
    CREATE SCHEMA Example
    The following statement creates a schema named blair for the user Blair, creates the table sox, creates the view red_sox, and grants SELECT privilege on the red_sox view to the user waites. CREATE SCHEMA AUTHORIZATION blair 
       CREATE TABLE sox 
          (color VARCHAR2(10)  PRIMARY KEY, quantity NUMBER) 
       CREATE VIEW red_sox 
          AS SELECT color, quantity FROM sox WHERE color = 'RED' 
       GRANT select ON red_sox TO waites; 
      

  9.   

    3x,let me try and test by it.
      

  10.   

    create schema语法可以对table,view,grant进行整体回滚