事情的原委:
今天遇到一个问题:一个数据表case_folder_info想要实现自定义排序功能,就在表里新加了一个字段SORT_NUMBER,由于表里存在已有数据,所以这个SORT_NUMBER字段都为空,但要想实现上移、下移、置顶等功能的话,需要里面有默认数据,所以我想给这个字段里默认有一些排序的值。
思考解决办法:
1、用c#写个小程序,然后取出来所有数据,UPDATE一遍,这个还得新建项目,添加数据库连接字符串,添加数据库类库引用,太麻烦。
2、用数据库自带的命令行方式实现。
最终经过我头脑的一番小斗争,虽然sql不太熟但还是决定尝试一下吧。
sql实现的思路:
由于命令行中无法直接使用declare这样使用变量,所以干脆用非常规的方式来解决吧,先建一个临时的存储过程,在存储过程中实现我要想的循环赋值,然后使用完后再删除这个存储过程就可以了。
具体的sql语句:
/*判断是否存在,如果存在就删除*/
drop procedure if exists tempProcedure_Test;/*取一个系统中绝对不会用到的存储过程名称*/
/*创建临时存储过程*/
create procedure tempProcedure_Test()
BEGIN
declare isDone int default 0; /*判断是否还有记录*/
declare intNumber int default 1;/*用于自增的变量*/
declare tempId char(36); /*每条记录循环时的临时I