在项目中需要监视oracle数据库的表空间情况,有如下语句:
select a.tablespace_name , b.sumspace, a.leftspace,round(100 * a.leftspace/ b.sumspace, 2) leftrate, round(100 * (b.sumspace - a.leftspace) / b.sumspace, 2) userate
     from ( select tablespace_name,sum(blocks*8192/(1024*1024)) leftspace from dba_free_space group by tablespace_name) a, 
     (select b.name tablespace_name,sum(a.bytes/(1024*1024)) sumspace  from v$datafile a, v$tablespace b where a.ts# = b.ts# group by b.name) b 
     where a.tablespace_name = b.tablespace_name order by a.tablespace_name其中V$datafile和V$tablespace是oracle的动态视图,ts#是字段名,里面带了ibatis表示参数的占位符$和#,导致程序报错:Incorrect inline parameter map format (missmatched name=value pairs)这个问题怎么解决啊?试了用CDATA包住整个语句,依然不管用。有哪位碰到过这种问题吗?

解决方案 »

  1.   

    <select id="testspecial" resultClass="java.util.HashMap" >
    select a.tablespace_name,
           b.sumspace,
           a.leftspace,
           round(100 * a.leftspace / b.sumspace, 2) leftrate,
           round(100 * (b.sumspace - a.leftspace) / b.sumspace, 2) userate
      from (select tablespace_name, sum(blocks * 8192 / (1024 * 1024)) leftspace
              from dba_free_space
             group by tablespace_name) a,
           (select b.name tablespace_name, sum(a.bytes / (1024 * 1024)) sumspace
              from v$$datafile a, v$$tablespace b
             where a.ts## = b.ts##
             group by b.name) b
     where a.tablespace_name = b.tablespace_name
     order by a.tablespace_name
    </select>