【发布时间】:2015-05-23 03:23:41
【问题描述】:
嘿,我有多个 BannerID,我需要存储过程中的参数,我想循环访问存储过程,更改作为参数传递的 BannerID。这是我的代码,
create table #a
(BannerID int,
BannerName varchar(100)NULL,
InterActionRate Decimal(5,3) NULL
)
Declare @Banker int
Set @Banker = 0
insert into #a(BannerID)
Values (21212),(21577)
WHILE (@Banker > 2)
BEGIN
Insert Into #a(BannerName,InteractionRate)
Exec BannerSummaryReport @BannerID=BannerID,@DateStart = N'05/01/15',@DateEnd = N'05/20/15'
Set @Banker = @Banker +1
END
Select * from #a
我不断收到错误:
消息 8114,级别 16,状态 5,过程 BannerSummaryReport,第 0 行 将数据类型 nvarchar 转换为 int 时出错。错误循环通过,就好像它被调用了两次以上,而我从来没有执行过查询。如果有帮助的话。有什么想法吗?
编辑:我添加了一个名为 @Banker 的变量,用作我的 while 循环的计数器。这使得循环现在结束。但是我的存储过程仍然没有填写数据,IE BannerName 和 InteractionRate 在表中仍然为空。
由于有些人要求存储过程,但问题是我无法访问它,但我可以给你一个输出示例,
执行 BannerSummaryReport @BannerID=21212,@DateStart = N'05/01/15',@DateEnd = N'05/20/15'
我得到了一个很长的项目列表
ReportID BannerName TagName CompanyName BannerStatusID BannerID Impressions FlashImpressions NoScriptImpressions UniqueViers TotalInterActions WebCT ListingCT ListingClickThrough TotalCT InterActionRate ClickThroughRate InterActionDiff ClickThroughDiff ActiveBanners DataSort1 DataSort2 RollOverCount RollOverTime ListingVideoPlayCount ListingVideoPlayTime ListingEmailDealer ListingEmailFriend ClickSortItem1 ClickSortItem2 ClickSortMenu ClickLogo ClickMap ClickWebSite DateAdded PercentagePlayed TagVideoPlayCount TagVideoPlayTime TagVideoTwitter ListingVideoTwitter TagVideoFacebook ListingVideoFacebook TagVideoPinterest ListingVideoPinterest ListingThumbnail ListingScroll TagVideoPlayButtonCount UpdateFilterButtonClick ClickTopSheetExtendImage AccountID ModelSelectClick TrimSelectClick ExteriorColorSelectClick InteriorColorSelectClick InventoryViewClick ShareButtonClick ZipCodeEntered MapClickThrough MenuOpen SummaryClick Misellaneous BannerType VPaidPreRollTime VPaidPreRollCount Mids Ends CreativeIsTrackable CreativeWasViewable
1 JimmyEllisDemo All DO NOT TOUCH 1 21212 10932905 906549 0 0 11385 63 13 0 0 0.10414 0.00058 NULL NULL 0 Make Model 11291 128193472 14 163846 0 0 1 0 2 0 0 63 2012-01-13 0 7328 48262968 0 0 0 0 0 0 0 0 1 0 0 666 0 0 0 0 0 0 0 0 0 0 0 1 0 0 NULL NULL NULL NULL
【问题讨论】:
-
我的第一个猜测是
@DateStart和/或@DateEnd被声明为整数参数而不是字符串参数。您的while条件看起来永远不会终止,但这是另一回事。 -
对我来说,您的
WHILE似乎永远不会结束 -
@Gordon Linoff 和 Lamak,嘿,伙计们,我已经编辑了查询,所以它有一个永无止境的循环,感谢解决了一个问题!
-
这将有助于发布您的存储过程 BannerSummaryReport 的一些请求。
-
我们仍然不知道使用“Select *”的存储过程的确切输出。尝试类似“选择 BannerName,InteractionRate”。即使您的“插入...”有效,它也会将新行添加到您的临时表#a,而不是更新现有行。
标签: sql-server tsql stored-procedures