oracle之在结果集中插入数据

背景

在做一个项目时,有这样一个需求。通过选择父选项如(办公楼层),对应的子选项(工位)会自动生成选项。

只需要在父下拉框变动时,触发一次数据库查询,并将结果组合成选项赋予给子选项即可。

但是由于子选项(工位)是变动的,存在新增的情况,所以需要子选项有一个固定的选择项(新增)。

不考虑前台实现,那么就需要数据库在查询时,增加一个固定数据后再返回。

实现

其实理清了思路,实现还是比较简单的,使用union关键词。

例如原子选项数据集为:

1
select sl.seat_no as seat from seat_list sl where sl.building = i_building

选择项为1项,那么固定选项为:

1
select ‘新增’ as seat from dual

合并两个集合:

1
2
3
4
select ‘新增’ as seat from dual 
union
(select sl.seat_no as seat from seat_list sl where sl.building = i_building )
order by seat desc

这里由于固定选项为汉字,其他选项为数字,为了保持在第一个,所以直接使用order by seat desc即可。

扩展

这样即可选择又可新增的前台展示,一般通过前台控件实现。后台实现的话那么上述方法也可参考。