双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

存储过程的问题帮忙解决一下 这是一个动态提交的语句

usernamezero usernamezero 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Alter procedure pr_KeFuFaHuo_FaHuoDan
@CustomerNo varchar(50),
@KeFuFaHuoID varchar(6000),
@CaoZuoRen varchar(50),
@Factory varchar(50)
as
begin
set xact_abort on
begin transaction t
declare @kh_Lxr varchar(50),@kh_Tel varchar(50),@kh_Fx varchar(100),@kh_Dz varchar(100);
declare keCursor cursor for
select top 1 isnull(Dt.DeptName,'客户资料不完整'),isnull(Dt.Tel1,'客户资料不完整'),
isnull(Z.ZoneName,'客户资料不完整'),isnull(C.Address,'客户资料不完整')
from CustomerDept Dt
left join Customer C on Dt.CustomerNo=C.CustomerNo
left join Zone Z on C.City=Z.id
where Dt.DeptFlag='1' and Dt.CustomerNo=@CustomerNo
open keCursor
fetch next from KeCursor into @kh_Lxr,@kh_Tel,@kh_Fx,@kh_Dz
while @@fetch_status=0
begin
break;
end
close keCursor;
deallocate keCursor

declare @vsql varchar(8000);
set @vsql=(' declare @ddlx varchar(50);declare @ddbh varchar(50);declare @fhsl int;'
+' declare @mxddlx varchar(50);declare @mxddbh varchar(50);declare @mxcpbh varchar(50);declare @mxfhsl int;'

+' declare @t table( DingDanLeiXing varchar(50),DingDanBianhao varchar(50),FaHuoShuLiang int);'
+' insert into @t(DingDanLeiXing,DingDanBianhao,FaHuoShuLiang) '
+' select DingDanLeiXing,DingDanBianhao,sum(FaHuoShuLiang) FaHuoShuLiang '
+' from KeFuFaHuo where ID in ('+@KeFuFaHuoID+') group by DingDanLeiXing,DingDanBianhao ; '
+' declare @t_mingxi table(DingDanLeiXing varchar(50),DingDanBianhao varchar(50),ChanPinBianHao varchar(50),FaHuoShuLiang int);'
+' insert into @t_mingxi(DingDanLeiXing,DingDanBianhao,ChanPinBianHao,FaHuoShuLiang) '
+' select DingDanLeiXing,DingDanBianhao,ChanPinBianHao,sum(FaHuoShuLiang) FaHuoShuLiang '
+' from KeFuFaHuo where ID in ('+@KeFuFaHuoID+') group by DingDanLeiXing,DingDanBianhao,ChanPinBianHao ; '

+' declare MyCursor Cursor for select DingDanLeiXing,DingDanBianhao,FaHuoShuLiang from @t '
+' open MyCursor '
+' fetch next from MyCursor into @ddlx,@ddbh,@fhsl '
+' while @@fetch_status=0 '
+' begin '
+' declare @bh_FH varchar(50); '
+' set @bh_FH=( Replace(Replace(Replace(Replace(Convert(varchar(50),GetDate(),21),'':'',''''),''-'',''''),'' '',''''),''.'','''') ) ; '
+' print @bh_FH '
-- +' insert into FaHuoDan(ID,FaHuoDanBianHao,DanJuRiQi,KeHuBianHao,KeHuLianXiRen,KeHuLianXiRenLianXiFangShi, '
-- +' FangXiang,FaHuoDiZhi,FaHuoShuLiang,ZhuangTai,XinJianRen,XinJianRiQi,DeleteTag,ShouHuoQueRen, '
-- +' ChanPinLeiXing,DingDanLeiXing,ShouHuoShuLiang,SuoShuGongChang) '
-- +' values(NewID(),@bh_FH,GetDate(),'''+@CustomerNo +''','''+@kh_Lxr+''','''+@kh_Tel+''','
-- + ' '''+@kh_Fx+''','''+@kh_Dz+''',@fhsl,''0'','''+@CaoZuoRen+''',GetDate(),''0'',''0'', '
-- +' substring(@ddlx,0,1),@ddlx,'''','''+@Factory+''' ) '

-- +' declare MxCursor cursor for select DingDanLeiXing,DingDanBianhao,ChanPinBianHao,FaHuoShuLiang from @t_mingxi '
-- +' open MxCursor '
-- +' fetch next from MxCursor into @mxddlx,@mxddbh,@mxcpbh,@mxfhsl '
-- +' while @@fetch_status=0 '
-- +' begin '
-- +' if @mxddlx=@ddlx and @mxddbh=@ddbh '
-- +' begin '
-- +' insert into FaHuoDanMingXi(id,FaHuoDanBianHao,ChanPinBianHao,ShuLiang)'
-- +' values( NewID(),@bh_FH,@mxcpbh,@mxfhsl ) '
-- +' end '
-- +' fetch next from MxCursor into @mxddlx,@mxddbh,@mxcpbh,@mxfhsl '
-- +' end '
-- +' close MxCursor '
-- +' deallocate MxCursor '

+' fetch next from MyCursor into @ddlx,@ddbh,@fhsl '
+' end '
+' close MyCursor '
+' deallocate MyCursor'
);
print @vsql;
exec (@vsql)
if @@Error<>0
begin
RollBack transaction t;
end
else
begin
Commit transaction t;
end
end


set @bh_FH=( Replace(Replace(Replace(Replace(Convert(varchar(50),GetDate(),21),'':'',''''),''-'',''''),'' '',''''),''.'','''') ) ;

此句为什么获得的时间一样,这是在一个循环里边的应该时间是不一样的啊,各位帮解决下,3ks


---以下是执行语句
begin
declare @CustomerNo varchar(50), @KeFuFaHuoID varchar(500), @CaoZuoRen varchar(50), @Factory varchar(50);
set @KeFuFaHuoID=(' ''3859C7DB-4866-4312-8886-69D42DD69538'',''D0B58016-487E-4E24-81C5-5E4B62383D6B'' ');
exec pr_KeFuFaHuo_FaHuoDan 'J2011006',@KeFuFaHuoID,'777777','001001'
end

...全文

相关推荐

sql存储过程实例--动态根据表数据复制一个表的数据到另一个表

主要介绍了sql存储过程实例--动态根据表数据复制一个表的数据到另一个表的相关资料,需要的朋友可以参考下

weixin_38688956

sqlserver利用存储过程去除重复行的sql语句

还是先上代码吧 ,可以先看 SQL语句去掉重复记录,获取重复记录 代码如下: ALTER procedure [dbo].[PROC_ITEMMASTER_GETUNIQUE] @PAGEINDEX INT,@uid int,@itemnumber varchar(50) AS begin tran –开始事务 drop table [ItemMaster].[dbo].[testim] –删除表 –把不重复记录转存到testim中 select * into [ItemMaster].[dbo].[testim] from [ItemMaster].[dbo].[dat_item_maste

weixin_38660802

解决Oracle批量修改问题

问题:根据唯一字段编码修改其它字段,修改部分数据,数量在上万条数据,数据大,一开始就卡死了!笨办法,一条一条修改不知可年可月啊。其他方法个人原因实在是无能为力。如下: update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2V'; update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-A001-2W'; update ka02_new set aka065=1,aka166=1 where aka060='X-P02CA-A010-

weixin_38534344

sql 语言批执行语句

帮用户做的一个用来更新数据库的小工具,里面代码很详实,可以用开学习,也可以用来在没有安装sql server数据库的情况下更新远程数据库。

hahahashiwo

MySQL 存储过程中执行动态SQL语句的方法

drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure() BEGIN declare my_sqll varchar(500); set my_sqll='select * from aa_list'; set @ms=my_sqll; PREPARE s1 from @ms; EXECUTE s1; deallocate prepare s1; end; 您可能感兴趣的文章:mysql 存储过程中变量的定义与赋值操作mysql存储过程详解mysq

weixin_38625416
评论 6
收藏 已收藏
分享
返回顶部
usernamezero
MS-SQL Server 34,876 成员 254,635 内容