Oracle使用游标和循环更新另一张表

缘起

最近遇到个问题,由于业务需要,需要在已有很多用户的系统中,对每位用户绑定唯一一个二维码信息,这个二维码的数据表已经有了,只需要更新二维码表的userId字段即可。这个二维码表有1万条二维码信息,并且这个二维码表的条目是固定的,但要节约使用,用户离职时需要对二维码表更新状态(state)标记,以保证以后复用,系统用户数远不足1万,倒是不会溢出二维码表。
梳理一下思路
  • 二维码表(qrcode)通过字段userId与用户表(user)的id进行关联
  • 二维码表有一万条数据,并且不再新增删除
  • 用户表条目非常少,不会超过1万条

SQL实现分页技术

一直在用Oracle进行开发,用到了分页,好奇心了解了一下其他 sql 数据库的分页技术,还是有一些差别的。

Mysql分页

mysql的分页比较简单,它用到了limit这个重要的关键字,有了它之后只用一条语句就能实现。

select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4

即取出第3条至第6条,4条记录

Oracle

Oracle稍微复杂一点,可以通过建立内表的形式实现,如下:

## 用来检索从第11到第20条数据

SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN BETWEEN 11 AND 20