存储过程中拼接字符串

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

原文地址:https://www.cnblogs.com/ecosu/p/4399020.html