Hi ,
I am stuck up with the try catch block in my code. Scenario is i am updating many tables , while updating if it throws an error it should go to catch block and display a output parameter as 1, If no error it should pass as 0. Below is my code, I am working on sql server 2008. Pls help me in this. Thanks in advance.
Create PROCEDURE [dbo].[sptalon_RailroadHistory]
(
@ID int
,@Action VARCHAR(10)
,@InsertUser varchar(MAX)
,@NOTES varchar(1000)
,@output BIT output
)
AS
DECLARE
@SCAC varchar(50),
@Name varchar(50),
@RailroadID int,
@SCAC1 varchar(50),
@Name1 varchar(50),
@RailroadID1 int,
@Rc2Key varchar(50),
@Rc2Key1 varchar(50),
@RRID int,
@myqry2 NVARCHAR(max)
BEGIN TRY
BEGIN
Set @RRID = (Select RRID from SSDB_Railroad_History where ID=@ID)
IF OBJECT_ID ('tempdb..#temp') IS NOT NULL
BEGIN
DROP TABLE #temp
END
;WITH CTE as
(
select ID,RRID,SCAC,Name,railroadid,rc2key,notes,action,insertdate_updatedate,insertuser_updateuser,ROW_NUMBER() over(order by insertdate_updatedate)
as 'rownum' from SSDB_Railroad_History WHERE ACTION in( 'UPDATE','INSERT' ) AND RRID = @RRID
)
select * into #temp from CTE where rownum=((select rownum from CTE where ID = @ID)-1)
SET @SCAC1 = (Select SCAC from #temp)
SET @Name1 = (SELECT Name from #temp )
SET @RailroadID1 =(SELECT RailroadID from #temp )
SET @Rc2Key1 = (Select Rc2key from #temp )
SET @SCAC = (Select SCAC from SSDB_Railroad_History WHERE ID = @ID )
SET @Name = (SELECT Name from SSDB_Railroad_History WHERE ID = @ID )
SET @RailroadID =(SELECT RailroadID from SSDB_Railroad_History WHERE ID = @ID )
SET @Rc2Key = (Select Rc2key from SSDB_Railroad_History WHERE ID = @ID )
IF (@Action ='Update')
BEGIN
IF @SCAC <> @SCAC1
BEGIN
INSERT INTO SSDB_HistoryComparision (
RRSubdivID,
ColumnName ,
Old_ColVal ,
New_ColVal ,
TableName ,
Notes ,
[Action] ,
InsertUser
)
SELECT
@RRID,
'SCAC',
@SCAC1 ,
@SCAC ,
'SSDB_Railroad' ,
@NOTES ,
@Action ,
@InsertUser
IF @SCAC1 IN (Select SCAC from SSDB_Railroad)
BEGIN
SET @myqry2='UPDATE ImportedMilepostRange SET SCAC = '+ ''''+@SCAC+'''' +' '+'WHERE SCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_Railroad SET SCAC = '+ ''''+@SCAC+'''' +' '+'WHERE SCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_SubdivisionRR SET SCAC = '+ ''''+@SCAC+'''' +' '+'WHERE SCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_Subdivision SET SCAC = '+ ''''+@SCAC+'''' +' '+'WHERE SCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_BOS SET SCAC = '+ ''''+@SCAC+'''' +' '+'WHERE SCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_DeviceStatusConfiguration SET DeviceStatusSCAC = '+ ''''+@SCAC+'''' +' '+'WHERE DeviceStatusSCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_Interconnect SET FacingSCAC = '+ ''''+@SCAC+'''' +' '+'WHERE FacingSCAC = ' + ''''+@SCAC1+''''
EXECUTE sp_executesql @myqry2
END
END
IF @Name <> @Name1
BEGIN
INSERT INTO SSDB_HistoryComparision (
RRSubdivID,
ColumnName ,
Old_ColVal ,
New_ColVal ,
TableName ,
Notes ,
[Action] ,
InsertUser
)
SELECT
@RRID,
'NAME',
@Name1 ,
@Name ,
'SSDB_Railroad' ,
@NOTES ,
@Action ,
@InsertUser
IF @Name1 IN (Select Name from SSDB_Railroad)
BEGIN
SET @myqry2='UPDATE SSDB_Railroad SET Name = '+ ''''+@Name+'''' +' '+'WHERE Name = ' + ''''+@Name1+''''
EXECUTE sp_executesql @myqry2
SET @myqry2='UPDATE SSDB_SubdivisionRR SET RailRoadName = '+ ''''+@Name+'''' +' '+'WHERE RailRoadName = ' + ''''+@Name1+''''
EXECUTE sp_executesql @myqry2
END
END
IF @RailroadID <> @RailRoadID1
BEGIN
INSERT INTO SSDB_HistoryComparision (
RRSubdivID,
ColumnName ,
Old_ColVal ,
New_ColVal ,
TableName ,
Notes ,
[Action] ,
InsertUser
)
SELECT
@RRID,
'RailroadID',
@RailroadID1 ,
@RailRoadID ,
'SSDB_Railroad' ,
@NOTES ,
@Action ,
@InsertUser
Update ImportedMilepostRange SET RailRoadID = @RailroadID where RailRoadID = @RailroadID1
UPDATE SSDB_Railroad SET RailRoadID = @RailroadID where RailRoadID = @RailroadID1
UPDATE SSDB_SubdivisionRR SET RailRoadID = @RailroadID where RailRoadID = @RailroadID1
END
END TRY
Deepa