读书人

MS-SQL怎样在存储过程里实现自动编号?

发布时间: 2012-10-21 09:00:07 作者: rapoo

MS-SQL怎样在存储过程里实现自动编号?类似楼房小区编号?在线等
直入主题:

现有一张数据表tb:
房间编号(tb01)|楼盘号(tb02)|层数(tb03)|房间号(tb04)

------------------------------------------------------

存储过程只要三个参数,楼盘号a,楼房层数b,房间数c。怎样在存储过程里实现如下思路:

描述:现在想给房间自动编号,规则是:先得到总房间数b*c,然后再逐层编号,例如楼盘号是F1,层数为2,房间数为3,
总的就是6间,编号应该是(一层一层的挨个编号):

现在想通过存储过程生成插入上面6条语句,存储过程示例:myStoreProcess(F1,2,3)

房间编号|楼盘号|层数|房间号
F1-01-01 | F1 | 01 | 01
F1-01-02 | F1 | 01 | 02
F1-01-03 | F1 | 01 | 03
F1-02-01 | F1 | 02 | 01
F1-02-02 | F1 | 02 | 02
F1-02-03 | F1 | 02 | 03

[解决办法]

SQL code
--> 测试IF OBJECT_ID('pmyStoreProcess') IS NOT NULL DROP PROC pmyStoreProcessGO CREATE PROC pmyStoreProcess@a VARCHAR(10),@b INT,@c INT ASBEGINSELECT 房间编号=@a+'-'+RIGHT(100+a.number,2)+'-'+RIGHT(100+b.number,2),       楼盘号=@a,       层数=RIGHT(100+a.number,2),       房间号=RIGHT(100+b.number,2)  FROM master..spt_values a ,master..spt_values b WHERE a.number   BETWEEN 1 AND @b     AND b.number   BETWEEN 1 AND @c    AND a.type='p'    AND b.type='p'ENDgo--------------开始查询--------------------------EXEC pmyStoreProcess 'F1',2,3----------------结果----------------------------/* 房间编号    楼盘号    层数    房间号F1-01-01    F1    01    01F1-01-02    F1    01    02F1-01-03    F1    01    03F1-02-01    F1    02    01F1-02-02    F1    02    02F1-02-03    F1    02    03*/ 

读书人网 >SQL Server

热点推荐