Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存储过程的游标或循环_Sql_Loops_Cursor - Fatal编程技术网

Sql 存储过程的游标或循环

Sql 存储过程的游标或循环,sql,loops,cursor,Sql,Loops,Cursor,我有一张表,里面有记录。其中一个字段是数量字段。对于该行,我必须将同一行(数量字段中有多少次)放入另一个表中。我还必须从第三个表中获得使每一行唯一的数字赋值 所以 tblrecnumassignments--分配编号 claimstoexplode—要按每行数量分解的行 声明--每个记录将驻留的位置 这是我的三张桌子 我可以得到一行插入的数量。但它使用相同的rec num,如何让它转到claims to explode中的下一行。我太迷路了,老板要我完成这件事 SET ARITHABORT OF

我有一张表,里面有记录。其中一个字段是数量字段。对于该行,我必须将同一行(数量字段中有多少次)放入另一个表中。我还必须从第三个表中获得使每一行唯一的数字赋值

所以

tblrecnumassignments--分配编号

claimstoexplode—要按每行数量分解的行

声明--每个记录将驻留的位置

这是我的三张桌子

我可以得到一行插入的数量。但它使用相同的rec num,如何让它转到claims to explode中的下一行。我太迷路了,老板要我完成这件事

SET ARITHABORT OFF SET ANSI_WARNINGS OFF

declare @recnum as varchar(100), 
        @lngrecnum as varchar(100), 
        @vwclaimscount as int, 
        @count as int

select @vwclaimscount = COUNT([dlr num]) from claimstoexplode --outer loop number
select @lngrecnum = MAX([rec num] + 1) from tmpClaims_RecNumAssignment 

print @lngrecnum

select @count = claimstoexplode.qty from dbo.claimstoexplode --inner loop




begin

if @vwclaimscount > 0


insert into tmpClaims_RecNumAssignment
( operator, dtmadded)
values ('explode5', getdate())


insert into tmpclaims1 
([Dlr Num]
   ,[Promo]
   ,[Trans Code]
   ,[Proc Date]
   ,[Control Num]
   ,[Invoice Num]
   ,[Clm Date]
   ,[Amt Claimed]
   ,[Amt Appr]
   ,[Amt Paid]
   ,[Ad From]
   ,[Ad To]
   ,[Media]
   ,[Media Desc]
   ,[Audit 1]
   ,[Audit 2]
   ,[Audit 3]
   ,[Audit 4]
   ,[Audit 5]
   ,[Audit 6]
   ,[Prod Code 1]
   ,[Prod Code 1 %]
   ,[Prod Code 1 Amt]
   ,[Prod Code 1 Adv Amt]
   ,[Prod Code 2]
   ,[Prod Code 2 %]
   ,[Prod Code 2 Amt]
   ,[Prod Code 2 Adv Amt]
   ,[Comment]
   ,[Received Date]
   ,[Last Modified]
   ,[Ratio]
   ,[Number Of Ads]
   ,[Amt Applied]
   ,[UM]
   ,[Audited Amt]
   ,[Rated Ads]
   ,[Branch Number]
   ,[Operator]
   ,[Bal Pending]
   ,[Paid From Pending]
   ,[Store Num]
   ,[Clm Spec 1]
   ,[Clm Spec 2]
   ,[Status]
   ,[Rec Num]
   ,[Doc Type] 
   ,locked

)

select 
[dlr num]
,prognum
,'X'
,GETDATE()
,'0'
,''
,[received date]
,round([claimed amt]/qty,2)
,'0'
,'0'
,dtmfrom
,dtmto
,'9'
,  dbo.Promos.[Promo Misc 1]
         ,'01'
,''
,''
,''
,''
,''
   ,[Product]

,'0'
,'0'
,'0'
,bundlemodel
,'0'
,'0'
,'0'
,''
,[received date]
,''

,'100'
,'1'
,'0'
,'0'
,'0'
,'0'
,'0'
,claimstoexplode.operator
,'0'
,'0'
,'0'
,LEFT(reference,10)
,[record number]
,'1'
, @lngrecnum ,'L' ,'1' from claimstoexplode inner join
dbo.promos ON dbo.Promos.Promo = dbo.claimstoexplode.prognum

set @vwclaimscount = @vwclaimscount - 1
set @lngrecnum = @lngrecnum + 1
set @count = @count - 1

结束

如果您提供一些示例数据,您可能会得到更多的答案:如果您展示一个示例,说明您从何开始,以及您想要的结果,那么我们可能能够理解您对业务逻辑的英语描述。SQL只是结构化查询语言—一种被许多数据库系统使用的语言,而不是数据库产品。。。很多东西都是特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标签)。。。。