When dynamic sql is executed using sp_executesql,
Example:
The solution would be to remove the
GO
keyword cannot be used because it will produce and error "Incorrect syntax near GO". Also that SQL Server will be looking for a carriage return CHAR(13) and a line feed CHAR(10)
Example:
-- declare some variables DECLARE @SQL VARCHAR(100) DECLARE @dbName VARCHAR(100)-- Get the current or target database name SET @dbName = DB_NAME()-- Build the script SET @sql = 'USE [' + @dbName + ']' + CHAR(13) + CHAR(10) SET @sql = @sql + 'GO' + CHAR(13) + CHAR(10)-- Print the command PRINT (@sql)The code above will work for printing out the statement to the screen, but it will not execute if you add EXEC sp_executesql @sql
The solution would be to remove the
GO
keyword altogether. The code below will execute without an issue:
-- declare some variables DECLARE @SQL VARCHAR(100) DECLARE @dbName VARCHAR(100)-- Get the current or target database name SET @dbName = DB_NAME()-- Build the script SET @sql = 'USE [' + @dbName + ']' + CHAR(13) + CHAR(10) SET @sql = @sql + CHAR(13) + CHAR(10)-- Print the command PRINT (@sql) EXEC sp_executesql @sqlThe only way to get the dynamic sql to work with
GO
is to either copy the output to another window and run from there or write it to external file and then execute from your code using
exec master..xp_cmdshell 'osql -E -i C:\Scripts\test.sql'
No comments:
Post a Comment