存储过程 将数据插入到临时表,再根据条件判断 插入到不同的表

Posted 努力向上的小蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程 将数据插入到临时表,再根据条件判断 插入到不同的表相关的知识,希望对你有一定的参考价值。

 1 ALTER PROCEDURE [dbo].[Proc_PX_InportScore]
 2 --@IdentityNum nvarchar(50),
 3 @PlanType nvarchar(50),--培训类别Guid
 4 @BanQGuid nvarchar(50) --班期Guid
 5 as
 6 begin
 7 
 8 
 9 
10      --导入成绩
11      insert into pk_user(RowGuid,Name,IdentityNum,Age,Sex,DanWeiName,TitleCode,MobilePhone,IsEnable,[Status])
12      (--插入到人员表   条件:临时表里的人员不在人员表中  判断依据 IdentityNum
13      select LOWER(NEWID()),Name,IdentityNum,Age,(case Sex when \'\' then 0 else 1 end),DanWeiName,ZhiWu,MobilePhone,\'1\',\'2\'  from PX_InportScore
14      WHERE not exists (select pk_user.IdentityNum from pk_user WHERE  PX_InportScore.IdentityNum=pk_user.IdentityNum)
15      )
16 
17      insert into PX_BaoM(RowGuid,Name,UserGuid,LoginID,DanWeiName,PXPrograms,Note)
18      (--插入到报名表    条件:从临时表里插入成功到人员表中的人  并且这些人不存在报名表中  条件:人员表的RowGuid   报名表的UserGuid
19             select LOWER(NEWID()), a.Name,b.RowGuid,a.IdentityNum,a.DanWeiName,\'03\',Note
20             from PX_InportScore a 
21             join pk_user b on a.IdentityNum=b.IdentityNum
22             where b.rowguid not in (select UserGuid from PX_BaoM)
23 
24 
25      )
26 
27      insert into PX_BaoMDetail(RowGuid,ItemGuid,ItemName,IsDel,ClassGuid,ParentGuid,IsConfirm)
28      (--插入到报名子表   条件:插入成功到报名表里的人  并且这些人不在子表中       子表的ParentGuid  报名表的 RowGuid
29       select LOWER(NEWID()),@PlanType,\'\' ,\'0\',@BanQGuid, c.RowGuid,\'0\'
30             from PX_InportScore a 
31             join pk_user b on a.IdentityNum=b.IdentityNum
32             join PX_BaoM c on  b.rowguid =c.UserGuid
33             where c.RowGuid not in (select ParentGuid  from PX_BaoMDetail)
34 
35      )
36 
37 
38     --成功标记
39     update b set b.flag=1    
40     from PX_BaoMDetail a,PX_InportScore b where a.ClassGuid=@BanQGuid
41     
42      declare @successc int 
43      declare @failc int 
44 
45      select @successc= count(1)  from PX_InportScore where  Flag=\'1\'
46      select @failc= count(1)  from PX_InportScore where  isnull(flag,0)<>1
47              
48      select @successc as successc,@failc as failc
49 
50 
51 
52 
53 end
54 GO
View Code

 

以上是关于存储过程 将数据插入到临时表,再根据条件判断 插入到不同的表的主要内容,如果未能解决你的问题,请参考以下文章

oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。

MySQL存储过程循环遍历变量并插入临时表

如何从存储过程返回的游标将数据插入临时表

Oracle存储过程创建临时表,插入数据后,怎么返回临时表数据,并在asp.net中接收到datatable中

将数据从存储过程插入临时表

创建临时表并使用存储过程将数据加载到其中