bat文件:
SQLPLUS STCPT/STCPT@NIFSPT @C:\TEST.sql  > C:\TEST.log 
EXIT;SQL文件(TEST.sql)INSERT INTO S01A01
 VALUE (SELECT KAISHACD
              ,BUMONCD
              ,YYMMDO
              ,SIRESKCD
              ,BUMONRYAKU
              ,SUBSTR('测试测试',1,2)
              ,SIRESKRYAKU 
              ,SHOHNKBUN 
              ,TOKSKKBUN
        FROM S01A01@FFL_MEFA);
 COMMIT;
 EXIT;如果sql里面有中文,这是bat调用它,会报错。Log里面报的错,该字段是乱码。 
我如果把中文改成英文,就没有任何问题了。请教一下,如何解决。谢谢。

解决方案 »

  1.   

    把客户端的Oracle nls_language 为中文就可用了
      

  2.   

    select   *   from   v$nls_parameters查出来客户端设置就是中文的
      

  3.   

    另外,如果bat文件里, 路径有中文的话,也会执行失败。如:
    bat文件: 
    SQLPLUS STCPT/STCPT@NIFSPT @C:\测试\TEST.sql  > C:\测试\TEST.log 
    EXIT; 
      

  4.   

    哈哈。折腾了半天,问题终于解决了。1. 关于sql文里面有中文的问题。 如果直接把sql语言复制到sqlplus里面执行的话,没任何问题。
       但是如果是用sqlplus执行 sql文件,就会有乱码。
       这时应该在 生成 sql文件时,对编码方式做些限制。
       经测试,应为:Dim swSql As StreamWriter = New StreamWriter(“C:\TEST.SQL", False, System.Text.Encoding.Default)2. 对于 
       另外,如果bat文件里, 路径有中文的话,也会执行失败。 
       如: 
       bat文件: 
       SQLPLUS STCPT/STCPT@NIFSPT @C:\测试\TEST.sql  > C:\测试\TEST.log 
      EXIT;
      这时生成bat文件时,也限制编码方式。
      经测试,为:Dim swBat As StreamWriter = New StreamWriter(“C:\TEST.bat", False, System.Text.Encoding.Default