我有一个存储过程,通常每个参数一次只能获取一个值。
USE [BannerLink]
GO
DECLARE @return_value int
EXEC @return_value = [dbo [BannerSummaryReportNoTag]
@BannerID = 31606,
@TagName = 'SOSEnglishIBVNoCover'
现在我有一个包含多个BannerID和Tagnames的临时表。我想知道是否有办法用temptable中的数据填充存储过程。所以PSEUDO CODE就是这样的
USE [BannerLink]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[BannerSummaryReportNoTag]
@BannerID = #tmptable1.BannerID,
@TagName = #tmptable1.TagName
上面的代码显然不起作用,但我想知道如何在SQL Server
中执行此操作。谢谢!
答案 0 :(得分:2)
最佳解决方案是使用表类型参数,或者你需要一个性能杀手光标,就像这样......
async
答案 1 :(得分:1)
您可以使用Table Type
执行此操作。创建类型:
CREATE TYPE MyTableType AS TABLE
( TagName VARCHAR(50)
, BannerID INT );
改变你的过程:
ALTER PROCEDURE [dbo].[BannerSummaryReportNoTag]
@Banners MyTableType READONLY
AS
....
称之为:
DECLARE @T MyTableType
INSER INTO t VALUES ...
EXEC [dbo].[BannerSummaryReportNoTag] @Banners = @t