存储过程中拼接字符串


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM