求教SQL Server数据库利用重复执行存储过程生成数据的简单代码

悬崖跳舞被人砍 2013-11-27 05:22:32
我有一个表student,表中有一个列stu_No(学号),想插入100行,学号从001递增到100,利用存储过程实现,代码该怎么敲呢?
...全文
235 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2013-11-27
  • 打赏
  • 举报
回复
引用 10 楼 kingofluo 的回复:
引用 5 楼 fredrickhu 的回复:
[quote=引用 4 楼 kingofluo 的回复:] [quote=引用 2 楼 fredrickhu 的回复:] insert into student(stu_No) SELECT RIGHT(1000+number,3) FROM master..[spt_values] WHERE [type]='p' AND number BETWEEN 1 AND 100
能给解释一下代码的意思吗?
构造了一个1到100的数字 然后加上1000 截取前三位[/quote]这句代码直接就可以运行的吗?对原数据库没有什么要求的吧[/quote] 这个代码2000,也能运行的。
  • 打赏
  • 举报
回复
引用 12 楼 fredrickhu 的回复:
[quote=引用 9 楼 wufeng4552 的回复:] [quote=引用 6 楼 fredrickhu 的回复:] 不过在实际开发中不建议使用 master..[spt_values]表。
通常情况下 不会将学号提前生成吧 再说表里不仅仅只有学号列 每次更新其它信息?[/quote] 是的。所以在实际开发中还是写函数实现比较好。或者直接设计一个取号表。很多中央取号都这样做。[/quote]取号表
--小F-- 2013-11-27
  • 打赏
  • 举报
回复
引用 9 楼 wufeng4552 的回复:
[quote=引用 6 楼 fredrickhu 的回复:] 不过在实际开发中不建议使用 master..[spt_values]表。
通常情况下 不会将学号提前生成吧 再说表里不仅仅只有学号列 每次更新其它信息?[/quote] 是的。所以在实际开发中还是写函数实现比较好。或者直接设计一个取号表。很多中央取号都这样做。
  • 打赏
  • 举报
回复
引用 8 楼 wufeng4552 的回复:
自定义个函数 功能:学号自增 然后将学号列的默认值设置为这个自定义函数 函数的代码自己搜下吧
这个太高深,看不懂...
  • 打赏
  • 举报
回复
引用 5 楼 fredrickhu 的回复:
引用 4 楼 kingofluo 的回复:
[quote=引用 2 楼 fredrickhu 的回复:] insert into student(stu_No) SELECT RIGHT(1000+number,3) FROM master..[spt_values] WHERE [type]='p' AND number BETWEEN 1 AND 100
能给解释一下代码的意思吗?
构造了一个1到100的数字 然后加上1000 截取前三位[/quote]这句代码直接就可以运行的吗?对原数据库没有什么要求的吧
水族杰纶 2013-11-27
  • 打赏
  • 举报
回复
引用 6 楼 fredrickhu 的回复:
不过在实际开发中不建议使用 master..[spt_values]表。
通常情况下 不会将学号提前生成吧 再说表里不仅仅只有学号列 每次更新其它信息?
水族杰纶 2013-11-27
  • 打赏
  • 举报
回复
自定义个函数 功能:学号自增 然后将学号列的默认值设置为这个自定义函数 函数的代码自己搜下吧
唐诗三百首 2013-11-27
  • 打赏
  • 举报
回复
这个写法比较通俗易懂,

-- 建表
create table student(stu_No varchar(10))

-- 插入100行
declare @x int
select @x=1

while(@x<=100)
begin
 insert into student(stu_No) 
   values(replicate('0',3-len(@x))+rtrim(@x))
 select @x=@x+1
end

-- 结果
select stu_No from student

/*
stu_No
----------
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100

(100 row(s) affected)
*/
--小F-- 2013-11-27
  • 打赏
  • 举报
回复
不过在实际开发中不建议使用 master..[spt_values]表。
--小F-- 2013-11-27
  • 打赏
  • 举报
回复
引用 4 楼 kingofluo 的回复:
引用 2 楼 fredrickhu 的回复:
insert into student(stu_No) SELECT RIGHT(1000+number,3) FROM master..[spt_values] WHERE [type]='p' AND number BETWEEN 1 AND 100
能给解释一下代码的意思吗?
构造了一个1到100的数字 然后加上1000 截取前三位
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
insert into student(stu_No) SELECT RIGHT(1000+number,3) FROM master..[spt_values] WHERE [type]='p' AND number BETWEEN 1 AND 100
能给解释一下代码的意思吗?
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
为什么不设为int类型呢?
因为学号本来就不是int型啊,这样做太取巧了。。。
--小F-- 2013-11-27
  • 打赏
  • 举报
回复
insert into student(stu_No) SELECT RIGHT(1000+number,3) FROM master..[spt_values] WHERE [type]='p' AND number BETWEEN 1 AND 100
發糞塗牆 2013-11-27
  • 打赏
  • 举报
回复
为什么不设为int类型呢?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧