在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执行的时候会报错哦,希望大家注意。