--小爱,820帮忙写的代码,在临时可以,到正式表怎么就更新一个?
if object_id('[Tab]') is not null drop table [Tab]
go
CREATE TABLE [dbo].[Tab](
[ID] [int] IDENTITY(1,1) NOT NULL,--自增
[type] [varchar](50),--编号类型,比如是仓库编号,或者订单编号、商品编号这类的
[code] [varchar](50) NOT NULL,--这个存编号最大值,你的编号是根据某种规则生成的,比如是ABC1234DFG001 不管前面是什么规则,增量肯定是int类型的增量,所以这里存int 就可以了
[seed] int,--这个存每次的增量,通常是1
[date] [date] NULL--这里存日期类型比较方便
CONSTRAINT [PK_Tab] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
if object_id('p_GetID','P') is not null drop proc p_GetID
go
-- 取下一个编号的公共存储过程
CREATE PROC dbo.p_GetID
@type varchar(50)='仓库',--这个对应的是区号表里里面的类型
@seed int=1--这个存每次的增量
AS
SET NOCOUNT ON;
declare @d date=getdate(), @code int=0 --最大编号
--这里做个判断,某种类型的编号,切当天还没有取过号的话,就需要初始化一条数据
--加上行锁
begin try
begin tran
if not exists(select 1 from [Tab] with(rowlock) where [type]=@type and [date]=@d)
insert into [Tab] select @type,1,@seed,@d
--如果插入了 说明是第一次初始化的,所以最大值就是1 ,就可以直接return了
if @@rowcount>0
begin
set @code=1
if @@trancount>0
commit tran
return @code
end
--这里是已经存在记录了,所以更新一下取号表就可以了
UPDATE dbo.[Tab]
SET
@code = [code] + seed,
[code] = @code
WHERE [type]=@type and [date]=@d
;
if @@trancount>0
commit tran
return @code
end try
begin catch
if @@trancount>0
rollback tran
return @code
end catch
GO
--拼接SQL语句,循环更新SDNO,为什么只更新了一条?
declare @letter varchar(10)='KH', --首字母,可以多个字母
@id int , --流水号
@TLSH VARCHAR(20)--编号
declare @cnt int,@i int =1,@KHNAME nvarchar(30),@rowcoun int
select @cnt =@@rowcount
while @i<=@cnt
begin
exec @id=dbo.p_GetID '仓库',1
SET @TLSH=@letter+CONVERT(VARCHAR(6),GETDATE(),112)+right(10000+@id,4)
update TEORD set [SDNO]=@TLSH where id=@i and [SDNO]=''
select top 1 @KHNAME=KHNAME from TEORD where id=@i
update TEORD set [SDNO]=@TLSH where KHNAME=@KHNAME
set @i=@i+@@rowcount
end
select * from TEORD
/*
ID SDNO SDDATE SDREN KHNAME KHADDESS KHTEll KHTOPO SKUNAME SKU CQTY ZQTY JQTY
详细解决方案
批改一存储过程,非常感谢,就这么多分了
热度:330 发布时间:2016-04-24 23:42:38.0
相关解决方案
- JMS activemq ajxa方式连接mq服务器 消息能发送 但是报错误 activemq有经验的请赐教 非常感谢
- 求高手解决~myeclipse/tomcat搭web网站的有关问题,非常感谢~
- 请问java课程设计中的Hannoi塔,非常感谢
- java怎么转swf.最好能够提供源代码或者详细的说明,非常感谢
- 希望听到大家的详细讲解,非常感谢,该怎么解决
- SharpDevelop怎么支持DevExpress控件,非常感谢
- 一个很郁闷的js有关问题,有源文件,大家帮小弟我看看,非常感谢
- 一个有关问题,非常感谢
- .net 删除服务器图片,这个要如何解决,麻烦高手帮小弟我看看,非常感谢
- 哪位高手能给个简单易看懂的Falsh例子吗?非常感谢
- 希望高手可以帮小弟我解决一下。非常感谢
- 遍历有规律命名的页面控件,内详,非常感谢,该如何处理
- 【跪地求救】在某网页使用Basic Authentication,但要求每次都强制需要重新登录。拜托拜托,非常感谢!解决方法
- 非常奇怪的有关问题、高手来看看。非常感谢
- 大家帮忙给小弟介绍本关于控件开发的书,非常感谢!解决办法
- asp.net2.0开发webpart 时出现如下异常,请怎么解决,非常感谢
- SOS关于WEB页面创建广轮显组件的语句补充,请各位路过的朋友教教,非常感谢!该怎么解决
- 求教高手帮小弟我完成这个UPDATE语句,非常感谢
- 求OCA(1z0-042)题库,有的请发小弟我一份,非常感谢
- 涉及到堆栈地址,不知道怎么写这个call,请问一上,非常感谢
- 汇编新手寻答案.望高手解答下.非常感谢.顶礼膜拜了.该怎么解决
- 实在是没看懂,请帮忙翻译上 非常感谢
- 实在是没看懂,请帮忙翻译下 非常感谢,该怎么处理
- 哪位高手有maya人头建模的原文件!非常感谢
- 各位兄弟,请教怎么利用Ffmpeg进行音视频同步,非常感谢!(有代码)
- 遇到问题,求高手相助!非常感谢!
- [求助]请各位进入下 非常感谢(DEBUG问题)
- [求助]偶实在是想不出来该怎么改了.请大家帮帮忙!非常感谢!
- 求助!!非常感谢(如何找到我发表的话题)
- 谁能帮帮我 非常感谢