在ORACLE中写一个如下语句SET TRANSACTION;
SELECT * FROM GOODS WHERE WEIGHT>1000;
COMMIT;为嘛总是执行不了?
提示:ORA-00911: 无效字符

解决方案 »

  1.   

    靠,oracle的事务不傻这样搞的!
      

  2.   

    语法问题!不同版本支持的写法不同。
    我这里的数据库支持这么写
    set transaction read only;
      

  3.   


    我也试过但是还是不行,仍然提示ORA-00911: 无效字符SET TRANSACTION READ ONLY;
    SELECT * FROM T_STORE_IN_BILL  WHERE PIECES>1000;
    --COMMIT;//不确定该不该提交,都试过了
      

  4.   


    我在书上看到这样一段话:
    事务开始: 当第一个DML语句一个事务开始(数据操纵语言:insert、delete、select、update增、删、查、改)
    事务结束: 当一个commit和rollback语句被发
              当一个DDL语句执行,(数据定义语言 create、alter、drop、truncate)
              当一个DCL语句执行,(数据控制语言 grant、revoke(授权、回收)、set role)
              用户退出
              机器失效或者崩溃您的意思是,我必须写一个UPDATE、INSERT或者是DELETE语句嵌套在一个事务中才行?
      

  5.   

    只有你的语句让数据发生变化的时候!才需要COMMIT!
      

  6.   


    哦 这个道理我明白了,但是我只是想单纯的将SELECT显示的嵌套在一个事务中该怎么做?
      

  7.   

    我在TOAD下写的SQL语句,不是在SQL PLUS下,这个会有影响么?
      

  8.   

    搞明白了,感谢楼上诸位的帮助。问题果然出在TOAD上,TOAD不支持多行SQL语句,非要写的话,要使用脚本形式,使用SQL PLUS再次试验,结果正确。