在ibatis的sql配置文件中,如果是单独的sql语句,就是不是过程的情况下,写的sql语句是不能使用分号做结尾的,不然程序运行的时候会报
ora-00911: 无效字符
例如:
<select id="selectJobs" resultClass="com.tc.fts.ibatis.model.DbaJobs" parameterClass="String">
<![CDATA[
select t.JOB,t.LAST_DATE,t.THIS_DATE,t.NEXT_DATE,t.TOTAL_TIME,t.interval,t.FAILURES,t.WHAT
from sys.dba_jobs t
where t.LOG_USER='CTXSYS' and t.WHAT like '%$indexname$%';
]]>
</select>
就是因为最后加了一个分号会报错。
如果是过程或者程序片段就可以
<insert id="createJob" parameterClass="java.util.HashMap">
<![CDATA[
variable jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''$indexname$'',''$memory$'');', SYSDATE, '$interval$');
commit;
END;
]]>
</insert>
具体的原因就是因为 “Oracle数据库接口对书写格式要求非常严格,有时候即使多加一个空格,多加一个逗号,分号,回车等都不行”。
常使用pl/sql developer的同志们都喜欢在sql语句的最后加一个分号,代表语句结束,但是用JDBC执行的时候会报错哦,希望大家注意。