| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2500 人关注过本帖
标题:关于存储过程实现编号自动增加问题?
只看楼主 加入收藏
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
其实有没有其他缩写头文字都是一样的,如果有其他头文字的话,在用户界面加一个下拉选择框并将其值赋予SP的外部变量就可以了。
假定头文字的外部变量为@a(属性你自己决定,基本上是varchar)
将@BookID在SP内宣言并将其定义为如下
set @BookID=@a+convert(varchar,
(
select max(convert(int,right(BookID,len(BookID)-len(@a))))+1
from BookStateInfo
where BookID like @a+'%'
))
其他应该不用说了吧。

[此贴子已经被作者于2006-4-12 12:08:51编辑过]


2006-04-12 12:03
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 

这样的话那个+1的地方需要改动一下

然后需要调用游标或者用While来递增递减@TotalStock


2006-04-12 12:07
missking
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-4-8
收藏
得分:0 

这样的话那个+1的地方需要改动一下

然后需要调用游标或者用While来递增递减@TotalStock
这个是怎么实现?没用过,你就佛送到西吧


2006-04-12 12:20
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
。。。

这个是你自己的毕业设计啊。。。

别人最多指点你一下思想方法,实现应该是靠自己来做的。

原则上的做法是在SP内再宣言一个Int变量,并用While语句判断其与@TotalStock的大小,当该变量未大于@TotalStock的时候,插入一行递增过@BookID的数据(@BookID可以用上面我写的,应该基本不用改动),然后让该Int变量递增1直至全部插入

2006-04-12 12:35
missking
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-4-8
收藏
得分:0 
并用While语句判断其与@TotalStock的大小 不会用
在高手的指点下,我修改了一下存储过程,不过还是没有运行出来
create proc Insert_BookStateInfo
@ISDN varchar(10),
@TotalStock integer
as
begin tran
declare @State varchar(10),@BookID varchar(13)
select @State='归还'
while (@TotalStock<>0)
begin
set @BookID=left(BookID,10)+(convert(varchar(3),(select max(convert(int,right(BookID,len(BookID)-10))+1)
from BookStateInfo
where ISDN=@ISDN ))
select @TotalStock=@TotalStock-1
insert into BookStateInfo(ISDN,BookID,State)
values(@ISDN,@BookID,@State)
end
update BookInfo
set TotalStock=isnull(TotalStock,0)+@TotalStock
from BookInfo as a ,BookStateInfo as b
where a.ISDN=b.ISDN and b.ISDN=@ISDN
commit

2006-04-12 13:35
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
while (@TotalStock<>0)
begin
set @BookID=left(BookID,10)+(convert(varchar(3),(select max(convert(int,right(BookID,len(BookID)-10))+1)
from BookStateInfo
where ISDN=@ISDN ))
select @TotalStock=@TotalStock-1
insert into BookStateInfo(ISDN,BookID,State)
values(@ISDN,@BookID,@State)
end

在前面宣言一个int变量并将其值赋为1
While判断条件为@TotalStock>=该变量
在end前面补一句set 该变量=该变量+1

2006-04-12 13:46
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
While语句的逻辑是
当满足此条件时,执行如下语句。你这样的写法是个死循环,永远出不了这个套

2006-04-12 13:48
快速回复:关于存储过程实现编号自动增加问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014492 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved