INSERT INTO TB_NEW_ICTYPE_DO_MAIN (DOTYPE,DOTYPENAME,IC_TYPE,HANDLE,DEPT,AREA,TIME_STATE) VALUES ('INTEGRALTREE','积分政策','IC02','EMP999','DEPT9999','AREA00003','Q2') chr(13); SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL  AS new_id FROM TB_NEW_ICTYPE_DO_MAIN ;
这条语句这样子执行不了~~然后非要在分号那里换一下行才可以,
INSERT INTO TB_NEW_ICTYPE_DO_MAIN
  (DOTYPE, DOTYPENAME, IC_TYPE, HANDLE, DEPT, AREA, TIME_STATE)
VALUES
  ('INTEGRALTREE',
   '积分政策',
   'IC02',
   'EMP999',
   'DEPT9999',
   'AREA00003',
   'Q2') chr
  (13);
SELECT S_TB_NEW_ICTYPE_DO_MAIN.CURRVAL AS new_id
  FROM TB_NEW_ICTYPE_DO_MAIN;
请问这是为什么?该如何解决?
我是在一段程序中将这条语句做为一个字符串存放的~请各位高手解答一下

解决方案 »

  1.   

    语句详情不必细看,简单来说就是这样:语句A;语句B 无法执行
    非要这样:语句A;
             语句B
    才能执行~
      

  2.   

    INSERT 是一个STATEMENT, 以逗号结束。
    要么写个存储过程返回游标结果集好了。
      

  3.   

    2楼,这本来是个很简单的2条语句,不想搞得那么复杂,没有别得办法了吗?
    其实就是A;B不能执行,
    A;
    B
    就可以执行了.这是为什么?我想中间加个换行符因该会好,可是该怎么加?
                      
      

  4.   

    晕,这就是SQL规定的啊。就是基本语法,编译器通过这个来解析你写的程序的。你想加什么换行符啊?要做成什么效果?
      

  5.   

    我想这样:语句A+换行符+语句B,告诉编译器我换行了~~
    要做成2条SQL语句A;B这样连在一起可以执行~
      

  6.   

    对不起,键盘不好使。    假如我俩比赛水中憋气,我50秒便浮出水面,你偏偏2分钟才浮出,我一气之下,不和你玩了。
         我想,这该不是Oracle不带你玩,可能是应用程序编译器的Bug。
      

  7.   

    如果是在程序中拼的两个SQL语句保存在一个String串中,想让它一起执行的话就放在 begin end 中,如下:
    begin 语句A; 语句B ; end;
    然后传到数据库端去执行即可
      

  8.   

    如果是在程序中拼的两个SQL语句保存在一个String串中,想让它一起执行的话就放在 begin end 中,如下:
    begin 语句A; 语句B ; end;
    然后传到数据库端去执行即可
      

  9.   

    是不是与Commit有关呀,
    有时这样会造成死锁呢;
      

  10.   

    解决办法就是在你的程序拼接字符串的时候,每个语句结束的时候,加个换行符号,让字符串输出到oracle之前有换行。
      

  11.   


    这是工具的问题吧?假如你用pl/sql developer来运行:
    sql A;sql B;
    会出错。
    但是你把这个语句放到procedure里面,就OK
      

  12.   

    奇怪?这样的代码我没有遇到过?不知道楼主是用什么开发工具写这个sql 代码的?