AI智能
改变未来

oracle分页,SQL EXCEPRTION 911 报错等

  • ORACLO分页

    pageIndex pageSize 两个参数

    查询一张表A

    首先假设有某个条件限制,类似于两个时间之内,

    select * from A where x between \’ a \’ AND \’b\’

     

    然后将此结果集作为一张表,在加一个排序的伪列进来,

    查询从零到当前页一共有多少数值

    select a.*, rownum rn from (

    select * from A where x between \’ a \’ AND \’b\’

    ) a where rn <= pageIndex * pageSize

    此时查询的就是当前页最后一个数到第一个数的值,

     

    最后再从此结果集中查询,此时就会用到之前设置的伪列

    select * from(

    select a.*, rownum rn from (

    select * from A where x between \’ a \’ AND \’b\’

    ) a where rn <= pageIndex * pageSize

    ) where rn >=(pageIndex -1)*pageSize +1

 

 

  • SQL EXCEPRTION \”911\”错误

将分号(;) 一起复制到xml文件中, 导致调用接口时一直报错,SQL EXCEPRTION \”911\”

如果是写在程序里面的sql就不需要加分号结尾, 因为会把分号当做语句一起查询,

在数据库中可加 可不加, 加了就是认为你这条语句结束

 

  • (ORACLE数据库,数据库BLOB字段, CLOB字段)

oracle数据库对于主键 , 设定了主键长度后, 如果主键长度不够, oracle会以空格自动补齐,可以打印长度来判断主键长度是否有空格,

CLOB字段一般用来保存长字符串, 对应实体类类型是Stirng

Blob字段以二进制保存图片等.对应实体类类型可以用byte[]数组来接受

  • #{}会预先处理参数, 会给参数加上引号, 例 #{test} \’test\’ ,并且可以防止sql语句被注入,

例 select * from student where name=#{inputName}

后台会解析 select * from student where name=?

${} 则是直接显示入参 , !!!!!可以直接用来传入表名

select * from ${student } where name=#{inputName} 或

select * from student order by ${入参} 会直接显示入参 进行排序

又或者在拼接sql,然后直接整个传入到mapper文件中 ${value}

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » oracle分页,SQL EXCEPRTION 911 报错等