0、http://www.mssqltips.com/tip.asp?tip=1294

This is VERY helpful, thanks a lot

During the Data Migration of last release, first I use “View Dependencies” , but it doesn’t cover all for omit those behind dynamic SQL.

 

SELECT distinct so.name

FROM syscomments sc

INNER JOIN sysobjects so ON sc.id = so.id

WHERE charindex('t_swrequests', text) > 0

 

select distinct specific_name from information_schema.routines

where lower(routine_definition) like '%t_swrequests%'

1、

ALTER PROCEDURE [dbo].[Usp_processswgrouprequest] @GrpSWRequestId INT 
AS 
  
DECLARE @UpdateTime DATETIME 
  
DECLARE @Count INT 
  
DECLARE @CompanyId INT 
  
DECLARE @SWRequestStatusId INT 
  
DECLARE @SWApprovalStatusPending INT
  
DECLARE @SWRequestId INT 
  
DECLARE @Err INT 

  
SELECT @UpdateTime = Getdate() 

  
SET @Err = 0 
  
SET @SWRequestStatusId = 1 -- RequestStatusPendingApproval 
  SET @SWApprovalStatusPending = 2 
  
SET @Count=0 

  
DECLARE curSWRequest CURSOR FOR 
    
SELECT DISTINCT V_Users.CompanyId 
    
FROM   T_SWRequestUsers 
           
INNER JOIN V_Users 
             
ON T_SWRequestUsers.UserId = V_Users.UserId 
    
WHERE  ( T_SWRequestUsers.SWRequestId = @GrpSWRequestId ) 

  
BEGIN TRANSACTION 

  
OPEN curSWRequest 

  
FETCH NEXT FROM curSWRequest INTO @CompanyId 

  
WHILE ( @@FETCH_STATUS = 0 ) 
    
BEGIN 
        
-- insert the SWRequest for each company 
        -- PRINT @CompanyId 
        SET @UpdateTime = Dateadd(ms, @CountGetdate()) 

        
INSERT INTO T_SWRequests 
                    (RequesterId, 
                     RequestDate, 
                     SWRequestStatusId, 
                     Routed, 
                     CompanyId, 
                     GroupId, 
                     ContactFirstName, 
                     ContactLastName, 
                     ContactEmail, 
                     CCEmails, 
                     OtherInformation, 
                     UpdateBy, 
                     UpdateTime, 
                     ParentSWRequestId, 
                     NotifyUsers) 
        
SELECT RequesterId, 
               
@UpdateTime
               
@SWRequestStatusId
               
'Y'
               
@CompanyId
               
NULL
               ContactFirstName, 
               ContactLastName, 
               ContactEmail, 
               CCEmails, 
               OtherInformation, 
               UpdateBy, 
               
@UpdateTime
               
@GrpSWRequestId
               NotifyUsers 
        
FROM   T_SWRequests 
        
WHERE  SWRequestId = @GrpSWRequestId 

        
IF @@ERROR != 0 
          
BEGIN 
              
ROLLBACK WORK 

              
RAISERROR('usp_ProcessGroupRequest:Error In Inserting record to T_SWRequest. Transaction is aborted.'
                        
16
                        
1

              
GOTO end_program 
          
END 

        
SET @SWRequestId = @@IDENTITY 

        
-- PRINT @SWRequestId 
        -- Insert Users 
        INSERT INTO T_SWRequestUsers 
                    (SWRequestId, 
                     UserId, 
                     UpdateBy, 
                     UpdateTime) 
        
SELECT @SWRequestId
               T_SWRequestUsers.UserId, 
               T_SWRequestUsers.UpdateBy, 
               
@UpdateTime 
        
FROM   T_SWRequestUsers 
               
INNER JOIN V_Users 
                 
ON T_SWRequestUsers.UserId = V_Users.UserId 
        
WHERE  ( T_SWRequestUsers.SWRequestId = @GrpSWRequestId ) 
               
AND V_Users.CompanyId = @CompanyId 

        
IF @@ERROR != 0 
          
BEGIN 
              
ROLLBACK WORK 

              
RAISERROR('usp_ProcessGroupRequest:Error In Inserting record to T_SWRequestUsers. Transaction is aborted.'
                        
16
                        
1

              
GOTO end_program 
          
END 

        
-- Insert SLAs 
        INSERT INTO T_SWRequestSLAs 
                    (SWRequestId, 
                     SLAId, 
                     UpdateBy, 
                     UpdateTime) 
        
SELECT DISTINCT @SWRequestId
                        T_SWRequestSLAs.SLAId, 
                        T_SWRequestSLAs.UpdateBy, 
                        
@UpdateTime 
        
FROM   T_SWRequestSLAs 
               
INNER JOIN T_GroupSLA 
                 
ON T_SWRequestSLAs.SLAId = T_GroupSLA.SLAId 
        
WHERE  ( T_SWRequestSLAs.SWRequestId = @GrpSWRequestId ) 
               
AND T_GroupSLA.CompanyId = @CompanyId 

        
IF @@ERROR != 0 
          
BEGIN 
              
ROLLBACK WORK 

              
RAISERROR('usp_ProcessGroupRequest:Error In Inserting record to T_SWRequestSLA. Transaction is aborted.'
                        
16
                        
1

              
GOTO end_program 
          
END 

        
-- Insert Softwares 
        INSERT INTO T_RequestSWs 
                    (SWRequestId, 
                     DocumentId, 
                     SWApprovalStatusId, 
                     RequestedBy, 
                     UpdateBy, 
                     UpdateTime) 
        
SELECT @SWRequestId
               DocumentId, 
               
@SWApprovalStatusPending
               RequestedBy, 
               UpdateBy, 
               
@UpdateTime 
        
FROM   T_RequestSWs 
        
WHERE  SWRequestId = @GrpSWRequestId 

        
IF @@ERROR != 0 
          
BEGIN 
              
ROLLBACK WORK 

              
RAISERROR('usp_ProcessGroupRequest:Error In Inserting record to T_RequestSWs. Transaction is aborted.'
                        
16
                        
1

              
GOTO end_program 
          
END 

        
SET @Count = @Count + 1 

        
FETCH NEXT FROM curSWRequest INTO @CompanyId 
    
END 

  
UPDATE T_SWRequests 
  
SET    Routed = 'Y'
         SWRequestStatusId 
= 2 
  
WHERE  SWRequestId = @GrpSWRequestId 

  
COMMIT WORK 

  END_PROGRAM: 

  
CLOSE curSWRequest 

  
DEALLOCATE curSWRequest 

  
RETURN 

 

相关文章:

  • 2021-12-09
  • 2021-06-15
  • 2021-06-15
  • 2021-12-26
猜你喜欢
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案