从数据库里面逐行逐行取出来,然后再依次进行update,或者修改操作,这时候需要游标
SET NOCOUNT ON
USE MB
GO
--定义变量
DECLARE @Enterprise_ID BigInt,
@Contact_ID BigInt,
@Bilateral_ID INT,
@Activity_ID INT,
@Activity_Code Char(36),
@Next_Call_Date datetime,
@VIN VarChar(30),
@Contract_date VarChar(30),
@Account_Number VarChar(30),
@Purchase_date VarChar(30),
@Model VarChar(30),
@Branch_Number VarChar(30),
@NewOrUsed VarChar(30),
@Mature_date VarChar(30),
@Dealer_Number VarChar(30),
@Term_Number VarChar(20),
@Last_Update_By VarChar(20)
SET @Activity_ID = 553 -- 553 --Production Activity_ID
SET @Last_Update_By = 'Napoleon'
SET @Next_Call_Date = Convert(DateTime,Convert(VarChar(10),DateAdd(Day,1,GetDate()),121) + ' 9:00:00')
---声明cursor
DECLARE tempInput CURSOR
FOR
SELECT
c.Bilateral_ID,
c.Enterprise_ID,
c.Contact_ID,
VIN = LEFT(t.VIN,20),
t.Purchase_Date,
t.Decoded_Model,
NewOrUsed =
case
when t.Number_Owners ='1' then 'New'
else 'Used'
end,
t.maturity_Date,
t.Selling_Dealer_Code,
Term =CONVERT(VarChar(20),dv.TERM)
FROM dragnet_5064_ticket_7561_20081103 t
left join napoleon_report..data_vehicles dv on
t.vin = dv.vin
left join mb..Contacts_DealerContacts c on
dv.owner_contact_id = c.contact_id
--打开游标
--取出了游标里的数据,然后把取出来的数据放到变量里面
--//从游标里取出数据赋值到我们刚才声明的2个变量中
Open tempInput
FETCH NEXT FROM tempInput INTO @Bilateral_ID,@Enterprise_ID,@Contact_ID,@VIN,@Purchase_date,@Model,@NewOrUsed,@Mature_date,@Dealer_Number,@Term_Number
//判断游标的状态
//0 fetch语句成功
//-1 fetch语句失败或此行不在结果集中
//-2被提取的行不存在
--然后把变量的值给 插入到所需要的表中
While (@@FETCH_STATUS <> -1)(一个while相当与一个for循环)
BEGIN (begin对应与一个end)
SET @Activity_Code = CONVERT(Char(36),NEWID())
INSERT INTO act_item (Buying_Center_ID,Enterprise_ID,Contact_ID,Activity_ID,Activity_date,Activity_Code,Closed,Closed_Reason,Next_Call_Date,Next_Call_Time,Telemarketers,Bilateral_ID,rowguid,Last_Update_Date,Last_Update_By,created_by)
VALUES (1,@Activity_ID,getdate(),@Activity_Code,NULL,@Next_Call_Date,@Bilateral_ID,NEWID(),GetDate(),@Last_Update_By,@Last_Update_By)
INSERT INTO actd_dfo (Activity_Code,Row_IDName,Data)
VALUES (@Activity_Code,'VIN',@VIN)
INSERT INTO actd_dfo (Activity_Code,'Purchase Date',@Purchase_date)
INSERT INTO actd_dfo (Activity_Code,'Model',@Model)
INSERT INTO actd_dfo (Activity_Code,'New/Used',@NewOrUsed)
INSERT INTO actd_dfo (Activity_Code,'maturity Date',@Mature_date)
INSERT INTO actd_dfo (Activity_Code,'Dealer Number',@Dealer_Number)
INSERT INTO actd_dfo (Activity_Code,'Term Number',@Term_Number)
--END(在处理程序的时候就是这个地方写错了,让我们那帮头找了很久,因为这句,他就提起end了,游标不会在往下面走了,陷入了死循环,end写在后面那个地方)
--用游标去取下一条记录
FETCH NEXT FROM tempInput INTO @Bilateral_ID,@Term_Number END
--//关闭游标
CLOSE tempInput
--//撤销游标DEALLOCATE tempInput
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。