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, @Count, Getdate())
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
相关文章: