存儲過程中拼接字符串


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-2026 CODEPRJ.COM