I am using dynamic SQL to build out some statements. Here is a truncated example of a stored proc UpdateFOO. When I debug this stored procedure, the problem is the @SQL variable I am declaring always stay empty! It is supposed to fill with the query. I suspect it has something to do with how I am formatting this, but I cant spot if its a bad formatting error.
CREATE PROC [dbo].[UpdateFOO]
@TEST1 uniqueidentifier,
@TEST2 nvarchar(40),
@TEST3 nvarchar(50),
@TEST4 char(1),
@TEST5 nvarchar(20),
@TEST6 nvarchar(40),
@LINKED_SERVER_NAME nvarchar(max),
@DATABASE_NAME nvarchar(max)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @SQL nvarchar(max)
SELECT @SQL = 'UPDATE [' + @LINKED_SERVER_NAME + '].[' + @DATABASE_NAME + '].[dbo].[SOME_TABLE]
SET [TEST1]=' + '''' + convert(nvarchar(36), @TEST1) + '''' +',
[TEST2]=' + '''' +@TEST2 + '''' +',
[TEST3]=' + '''' + @TEST3 + '''' +',
[TEST4]='+ '''' + @TEST4 + '''' +',
[TEST5]=' + '''' + @TEST5 + '''' +',
[TEST6]=' + '''' + @TEST6 + '''' +
' WHERE [TEST1] =' + '''' + convert(nvarchar(36), TEST1 )+ '''' +
+ 'SELECT [TEST1] FROM
[' + @LINKED_SERVER_NAME + '].[' + @DATABASE_NAME + '].[Rev].[SOME_TABLE]
WHERE [TEST1] =' + '''' + convert(nvarchar(36), TEST1 )+ '''' +''
PRINT LEN(@SQL)
EXEC (@SQL)
COMMIT
TIA Experts!
SELECT @SQL = ...statement. NULL concatenated with anything yields NULL. Try usingPRINTto check the values of@TEST2, @TEST3,etc.