0
我試圖插入一些數據。它沒有使用事務插入到表中。相反,它將進入catch塊。下面是SQL存儲過程: GO數據沒有被插入到使用事務的表中
/****** Object: StoredProcedure [dbo].[rml_re_GetAndStoreConsumerSubscriptionData_NEWUPS] Script Date: 05/21/2012 12:39:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC rml_re_GetAndStoreConsumerSubscriptionData_NEWUPS
ALTER PROCEDURE [dbo].[rml_re_GetAndStoreConsumerSubscriptionData_NEWUPS]
AS
BEGIN
DECLARE @currenttime datetime
SET @currenttime= getdate()
INSERT INTO rml_re_consumerdatasync_log VALUES('rml_re_GetAndStoreConsumerSubscriptionData',@currenttime,null,'started',@currenttime,'',getdate(),null);
BEGIN TRY
BEGIN TRANSACTION PULLCONSUMERDATA
DECLARE @dbServerName VARCHAR(50),@databaseName VARCHAR(50),@dbUserName VARCHAR(50),@query VARCHAR(MAX)
SELECT @dbServerName=dbservername,@databaseName=dbname,@dbUserName=dbusername FROM rml_re_applications
WHERE id=(SELECT configvalue FROM rml_re_configuration WHERE configname='CRMApplicationID')
-- Removes all old data before insertion.
ALTER TABLE [dbo].[rml_re_consumermarkets] DROP CONSTRAINT [FK_rml_re_consumermarkets_rml_re_consumercrops]
ALTER TABLE [dbo].[rml_re_consumermarkets] DROP CONSTRAINT [FK_rml_re_ConsumerSubscriptionMarket_rml_re_ConsumerSubscriptionData]
ALTER TABLE [dbo].[rml_re_consumercrops] DROP CONSTRAINT [FK_rml_re_ConsumerSubscriptionCrops_rml_re_ConsumerSubscriptionData]
TRUNCATE TABLE rml_re_consumermarkets
TRUNCATE TABLE rml_re_consumercrops
TRUNCATE TABLE rml_re_ConsumerSubscriptionData
ALTER TABLE [dbo].[rml_re_consumercrops] WITH NOCHECK ADD CONSTRAINT [FK_rml_re_ConsumerSubscriptionCrops_rml_re_ConsumerSubscriptionData] FOREIGN KEY([subscriptionid])
REFERENCES [dbo].[rml_re_ConsumerSubscriptionData] ([id])
ALTER TABLE [dbo].[rml_re_consumermarkets] WITH NOCHECK ADD CONSTRAINT [FK_rml_re_ConsumerSubscriptionMarket_rml_re_ConsumerSubscriptionData] FOREIGN KEY([subscriptionid])
REFERENCES [dbo].[rml_re_ConsumerSubscriptionData] ([id])
ALTER TABLE [dbo].[rml_re_consumermarkets] WITH CHECK ADD CONSTRAINT [FK_rml_re_consumermarkets_rml_re_consumercrops] FOREIGN KEY([cropid])
REFERENCES [dbo].[rml_re_consumercrops] ([cropid])
SET @query='';
SET @query= 'INSERT INTO rml_re_ConsumerSubscriptionData(id,msisdn,consumername,
languagetype,statecode,talukcode,districtcode,regioncode,status,
subscriptionstartdate,subscriptionenddate,DistributorCode,
package,soiltype,comp_category,AdditionalInfo)
SELECT id,msisdn,
case when Len(consumername) <=150 then consumername else null end as consumername,
case when Len(languagetype) <=10 then languagetype else null end as languagetype ,'
SET @[email protected]+' case when Len(statecode) <=5 then statecode else null end as statecode ,
case when Len(talukcode) <=10 then talukcode else null end as talukcode ,
case when Len(districtcode) <=10 then districtcode else null end as districtcode,
case when Len(regioncode) <=10 then regioncode else null end as regioncode ,
case when Len(status) <=50 then status else null end as status ,
subscriptionstartdate ,'
SET @[email protected]+' subscriptionenddate,
case when Len(DistributorCode) <=100 then DistributorCode else null end as DistributorCode ,
case when Len(package) <=50 then package else null end AS package ,
case when Len(soiltype) <=50 then soiltype else null end as soiltype,'
SET @[email protected]+' case when Len(comp_category) <=50 then comp_category else null end as comp_category ,
case when Len(AdditionalInfo) <=100 then AdditionalInfo else null end as AdditionalInfo '
SET @[email protected]+' FROM '
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New '
SET @[email protected]+' WHERE crop1code is not null AND crop2code is not null '
EXEC (@query)
SET @query='';
-- INSERT FOR rml_re_consumercrops
--INSER FOR PRIMARY CROP
SET @query='INSERT INTO rml_re_consumercrops(subscriptionid,commoditycode,sowingdate,sowingweek)'
SET @[email protected]+'SELECT id,case when Len(crop1code) <=15 then crop1code else null end as crop1code ,sowingdate1,DATEDIFF (WEEK,sowingdate1,getdate()) '
SET @[email protected]+' FROM '
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New '
SET @[email protected]+' WHERE crop1code is not null AND crop2code is not null'
EXEC (@query)
SET @query=''
--INSER FOR SECONDARY CROP
SET @query='INSERT INTO rml_re_consumercrops(subscriptionid,commoditycode,sowingdate,sowingweek)'
SET @[email protected]+'SELECT id,case when Len(crop2code) <=15 then crop2code else null end as crop2code ,sowingdate2,DATEDIFF (WEEK,sowingdate2,getdate()) '
SET @[email protected]+'FROM '
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New '
SET @[email protected]+' WHERE crop1code is not null AND crop2code is not null'
EXEC (@query)
SET @query=''
--INSERT FOR rml_re_consumermarkets
--INSER FOR PRIMARY CROP
SET @query='INSERT INTO rml_re_consumermarkets(cropid,subscriptionid,marketcode,ric)'
SET @[email protected]+'SELECT CS.cropid,E.id,case when Len(M.item) <=15 then M.item else null end AS marketcode ,case when Len(R.item) <=15 then R.item else null end AS ric '
SET @[email protected]+'FROM rml_re_consumercrops CS,'
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New E '
SET @[email protected]+' OUTER APPLY fnSplit(E.Ric1,'+''','''+') R,'
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New F '
SET @[email protected]+' OUTER APPLY fnSplit(F.MandiCode1,'+''','''+') M '
SET @[email protected]+' WHERE F.ID = E.ID
AND R.ID = M.ID
AND CS.commoditycode = E.crop1code
AND CS.subscriptionid=E.id
AND CS.subscriptionid=F.id '
SET @[email protected]+' AND E.crop1code is not null AND E.crop2code is not null'
SET @[email protected]+' AND F.crop1code is not null AND F.crop2code is not null'
EXEC (@query)
SET @query=''
--INSER FOR SECONDARY CROP
SET @query='INSERT INTO rml_re_consumermarkets(cropid,subscriptionid,marketcode,ric) '
SET @[email protected]+'SELECT CS.cropid,E.id,case when Len(M.item) <=15 then M.item else null end AS marketcode,case when Len(R.item) <=15 then R.item else null end AS ric '
SET @[email protected]+'FROM rml_re_consumercrops CS,'
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New E '
SET @[email protected]+' OUTER APPLY fnSplit(E.Ric2,'+''','''+') R,'
SET @[email protected]+' ['[email protected]+'].'[email protected]+'.'[email protected]+'.rml_re_getConsumerSubscriptionData_New F '
SET @[email protected]+' OUTER APPLY fnSplit(F.MandiCode2,'+''','''+') M '
SET @[email protected]+' WHERE F.ID = E.ID
AND R.ID = M.ID
AND CS.commoditycode = E.crop2code
AND CS.subscriptionid=E.id
AND CS.subscriptionid=F.id '
SET @[email protected]+' AND E.crop1code is not null AND E.crop2code is not null'
SET @[email protected]+' AND F.crop1code is not null AND F.crop2code is not null'
EXEC (@query)
COMMIT TRANSACTION PULLCONSUMERDATA
UPDATE rml_re_consumerdatasync_log SET status='completed',endtime=getdate() WHERE [email protected]
END TRY
BEGIN CATCH
-- ROLLBACK TRANSACTION PULLCONSUMERDATA
UPDATE rml_re_consumerdatasync_log SET status='failure',error_info=ERROR_MESSAGE() WHERE [email protected]
END CATCH
END
--exec rml_re_GetAndStoreConsumerSubscriptionData
GO