I am constructing a query. It will pull data from 10 different databases. Rather than write the code then different times, I am using a cursor to build the query. However, the only was I can think of to do it is to use dynamic SQL. I don't mind using it, but it has its limitations in this application. Here is a sample:[code="sql"]IF OBJECT_ID('TmpVendDBName', 'U') IS NOT NULL DROP TABLE TmpVendDBNameCREATE TABLE TmpVendDBName (BusinessUnit NVARCHAR(100), VendDBName NVARCHAR(100))INSERT INTO TmpVendDBName SELECT 'Australia', 'AUS_DB';INSERT INTO TmpVendDBName SELECT 'Brazil', 'BRL_DB';INSERT INTO TmpVendDBName SELECT 'United States', 'US_DB';DECLARE @BUName NVARCHAR(100)DECLARE @DBName NVARCHAR(100)DECLARE VendInvCursor CURSOR FORSELECT BusinessUnit, VendDBName FROM TmpVendDBNameOPEN VendInvCursorFETCH NEXT FROM VendInvCursor INTO @BUName, @DBNameWHILE @@FETCH_STATUS = 0 BEGIN DECLARE @SQLExecA NVARCHAR(MAX)SET @SQLExecA ='SELECT '' + @BUName + '' AS BusinessUnit , Item , ItemDescriptionFROM ' + @DBName + '.ProductTableWHERE ItemStatus = ''Active'''PRINT(@SQLExecA)FETCH NEXT FROM VendInvCursor INTO @BUName, @DBNameEND CLOSE VendInvCursorDEALLOCATE VendInvCursor[/code]Is there a way to write this in such a way that I don't have to use dynamic SQL?Thanks.Steve
↧