bat文件:
sqlplus STCPT/STCPT@NIFSPT  @D:\TMP\IT\SQL/DATAC001.SQL > C:\TRNS.LOG 调用d盘下面的一个sql文件。
文件内容:
INSERT INTO S01A01
 VALUE (SELECT KAISHACD
              ,BUMONCD
              ,YYMMDO
              ,SIRESKCD
              ,BUMONRYAKU
              ,SIRESKMN
              ,SIRESKRYAKU
              ,SHOHNKBUN
              ,TOKSKKBUN
        FROM S01A01_01@FFL_MEFA);
 COMMIT;这时是可以正常执行的。但是如果sql语句后面有注释了,这时就会报错了:ORA-00947
如:
INSERT INTO S01A01
 VALUE (SELECT KAISHACD --汉字汉字
              ,BUMONCD --汉字汉字
              ,YYMMDO --汉字汉字
              ,SIRESKCD --汉字汉字
              ,BUMONRYAKU --汉字汉字
              ,SIRESKMN --汉字汉字
              ,SIRESKRYAKU --汉字汉字
              ,SHOHNKBUN --汉字汉字
              ,TOKSKKBUN --汉字汉字
        FROM S01A01_01@FFL_MEFA);
 COMMIT;由于sql文件是程序生成的,客户可能看,希望后面有注释的。
有什么解决办法吗?
非常感谢!!!

解决方案 »

  1.   

    把注释用下面的方式试试:INSERT INTO S01A01 
    VALUE (SELECT KAISHACD /*汉字汉字 */
                  ,BUMONCD /*汉字汉字 */
      

  2.   

    也可以考虑在SQL头前定义:
    /*KAISHACD     汉字汉字
    BUMONCD      汉字汉字
    YYMMDO       汉字汉字
    SIRESKCD     汉字汉字
    BUMONRYAKU   汉字汉字
    SIRESKMN     汉字汉字
    SIRESKRYAKU  汉字汉字
    SHOHNKBUN    汉字汉字
    TOKSKKBUN    汉字汉字
     */
    INSERT INTO S01A01 
    VALUE (SELECT KAISHACD --汉字汉字 
                  ,BUMONCD --汉字汉字 
                  ,YYMMDO --汉字汉字 
                  ,SIRESKCD --汉字汉字 
                  ,BUMONRYAKU --汉字汉字 
                  ,SIRESKMN --汉字汉字 
                  ,SIRESKRYAKU --汉字汉字 
                  ,SHOHNKBUN --汉字汉字 
                  ,TOKSKKBUN --汉字汉字 
            FROM S01A01_01@FFL_MEFA); 
    COMMIT; 
      

  3.   

    要另起一行,
    INSERT INTO S01A01 
    VALUE (SELECT KAISHACD ,
    /*汉字汉字 */
                  BUMONCD ,
    /*汉字汉字 */
      

  4.   

    另起一行
    INSERT INTO S01A01
    VALUE (SELECT KAISHACD ,
    --汉字
                  BUMONCD ,
    --汉字
    也可以的
      

  5.   

    这个是我的
    批处理;
    sqlplus username/passwd @d:\abc.sql;abc.sql这样写的select empno,
    /*序号*/
    ename
    /*名字*/
    from scott.emp ;
    最后结果正常
      

  6.   

    我测试没问题啊。
    sqlplus tom/jack@9 @e:\test.sqltest.sql 如下:
    insert into 

    (
    select 
    a --字段
    from a1
    );
    commit;
      

  7.   

    建立LZ把语句直接放在sqlplus中执行,看看是否报错。
    SQL> ed
    已写入文件 afiedt.buf  1  insert into
      2  aa value
      3  (select a --字段
      4  ,b --字段
      5* from a1)
    SQL> ;
    SQL> /已创建2行。另外,ORA-00947 的错误是值不够,所以,把
    SELECT KAISHACD --汉字汉字 
                  ,BUMONCD --汉字汉字 
                  ,YYMMDO --汉字汉字 
                  ,SIRESKCD --汉字汉字 
                  ,BUMONRYAKU --汉字汉字 
                  ,SIRESKMN --汉字汉字 
                  ,SIRESKRYAKU --汉字汉字 
                  ,SHOHNKBUN --汉字汉字 
                  ,TOKSKKBUN --汉字汉字 
            FROM S01A01_01@FFL_MEFA
    完整执行,看看效果。