存储过程中拼接字符串
1.将查询数据插入临时表
最开始我这么写的
DECLARE @sql varchar(max) SET @sql='select * into #tmp from tb' EXEC(@sql) SELECT * FROM #tmp
报错
对象名'#tmp'无效
可以改成这样子
CREATE TABLE #tmp(....) DECLARE @sql varchar(max) SET @sql='select * from tb' INSERT #tmp EXEC(@sql) SELECT * FROM #tmp
即先创建一个临时表,然后把数据插入临时表中。
可以直接使用全局临时表实现这个功能
DECLARE @sql varchar(max) SET @sql='select * into ##tmp from tb' EXEC(@sql) SELECT * FROM ##tmp
2.将查询结果保存到变量
开始我是这么写的
DECLARE @sum INT DECLARE @sql varchar(max) SET @sql='select @sum=sum(f1) from tb' EXEC sp_executesql @sql,N'@sum int',@sum output
会报错
过程需要类型为'ntext/nchar/nvarchar'的参数'@statement'
发现需要把@sql的类型从varchar改成nvarchar