SQL动态执行存储过程
DECLARE @tableName NVARCHAR(20) DECLARE @columns NVARCHAR(200) DECLARE @sql NVARCHAR(500)--当使用sp_executesql执行时不能是VARCHAR(500) SET @tableName='Products' SET @columns='ProductName,UnitPrice' SET @sql=N'SELECT '+@columns+' FROM '+@tableName EXEC (@sql) --正确!!! EXEC ('SELECT '+@columns+' FROM '+@tableName) --正确!!! EXEC sys.sp_executesql @sql --正确!!!但是如果@sql定义成varchar类型此句就会出错 EXEC sys.sp_executesql N'SELECT ProductName,UnitPrice FROM Products'--正确!!!直接执行语句,语句前面必须加“N” EXEC sys.sp_executesql N'SELECT '+@columns+' FROM '+@tableName --错误!!!不能执行sql拼接,即使前面加N