I left a bunch of the code out on purpose to keep the script short. I have an EXEC in my code for what I want executed, I just need the IF condition to be correct (both in syntax and logic).
Here is the code complete script.
-- Stored Procedure to retrieve PeerReview data from schema version 4.x, 4.3, and 5.x
DECLARE @DB_Name nvarchar(200)
DECLARE @Version nvarchar(200)
DECLARE @PeerReview4x nvarchar(2000)
DECLARE @PeerReview43 nvarchar(2000)
DECLARE @PeerReview5x nvarchar(2000)
DECLARE database_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE UPPER(name) LIKE 'CQ%PROD'
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS ('USE ' +@DB_Name+ '
SELECT version_number
FROM '+ ''+@DB_Name+'' +'.CQ_DBO.schema_version
WHERE version_number LIKE ''4.%'' AND version_number NOT LIKE ''4.3%''')
BEGIN
SELECT @PeerReview4x = 'USE ' +@DB_Name+ '
SELECT '+ ''''+@DB_Name+ '''' +' as DB_Name, ''PeerReview'' AS record_type, T1.peerreviewid, T1.attached_script, T1.author, T1.comments, T1.corrective_time, T1.creation_date, T1.description,
T1.electronic_path, T1.email_subject_start, T1.emails_of_participants, T1.eng_discipline, T1.facilitator, T1.measure_name1, T1.measure_name2,
T1.measure_name3, T1.measure_value1, T1.measure_value2, T1.measure_value3, T1.meeting_date, T1.okay_no_actionitems, T1.program_phase,
T1.programspecificdata1, T1.programspecificdata10, T1.programspecificdata11, T1.programspecificdata2, T1.programspecificdata3,
T1.programspecificdata4, T1.programspecificdata5, T1.programspecificdata6, T1.programspecificdata7, T1.programspecificdata8,
T1.programspecificdata9, T1.fldcolumn AS ''references'', T1.review_method, T1.sdt_states, T2.name as state, T1.status, T1.total_action_items,
T1.total_attendees, T1.total_avg_time, T1.total_defect_ai, T1.total_mtg_time, T1.total_prep_time, T1.total_time, T1.fldcolumn_1 as type, T1.reviewtype,
T1.work_product_available
FROM '+ ''+@DB_Name+ '' +'.CQ_DBO.schema_version T0,
'+ ''+@DB_Name+ '' +'.CQ_DBO.peerreview T1 INNER JOIN
'+ ''+@DB_Name+ '' +'.CQ_DBO.statedef T2 ON T1.state = T2.id INNER JOIN
'+ ''+@DB_Name+ '' +'.CQ_DBO.enttable_1 T3 ON T1.security_context = T3.dbid
WHERE(T1.dbid <> 0)'
EXEC sp_executesql @PeerReview4x
END
--Get the next database in the cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
END
--Cleanup
CLOSE database_cursor
DEALLOCATE database_cursor