Quantcast
Channel: Forum Getting started with SQL Server
Viewing all articles
Browse latest Browse all 7129

Try catch block and pass a output parameter

$
0
0

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
END TRY


Deepa


Viewing all articles
Browse latest Browse all 7129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>