将数据绑定到Dataview时会出现此错误,但参数正确地发送了该值.
似乎DBhelper类抛出了这个错误,但不知道为什么
我的程序:
insert #leads(opp_lead,opp_NAME,CNT)
select opp_lead,'LEAD'+opp_lead,COUNT(*) from #pipeline GROUP BY opp_lead
UPDATE #leads SET opp_NAME=CONTACT_NAME FROM TBLCONTACT C, #leads L WHERE CONVERT(VARCHAR(50),L.opp_lead)=CONVERT(VARCHAR(50),C.CONTACT_ID)
COUNT(*) DESC
create table #YearlyEndCampaign
(
slno INT ,
lvl int
)
SELECT TOP 1 @MAXLEADS=COUNT(*) FROM #pipeline GROUP BY opp_lead ORDER BY COUNT(*) DESC
INSERT INTO #YearlyEndCampaign(slno,LVL)
SELECT SEQ,0 FROM (SELECT TOP (@MAXLEADS) seq = ROW_NUMBER() OVER (ORDER BY number) FROM [master]..spt_values)S
Run Code Online (Sandbox Code Playgroud)
C#代码:
long businessID = Convert.ToInt64(Session["BusinessID"]);
long YEAR = Convert.ToInt64(2015);
long UserID = Convert.ToInt64(Session["Contact_ID"]);
BeggingDA objBeggingDA = new BeggingDA();
DataView dv = (new BeggingDA()).BeggingLoadByBusinessID(YEAR, businessID, UserID);
Run Code Online (Sandbox Code Playgroud)
如你所说,第一个SELECT TOP 1 @MAXLEADS=COUNT(*) FROM #pipeline语句没有返回任何数据.这意味着它@MAXLEADS是null.
如果然后运行select top (NULL) FROM [master]..spt_values,则会收到TOP clause contains an invalid value错误,因为您没有传递数值TOP.
解决方法是@MAXLEADS在执行插入之前检查是否为null - 如果没有任何行,则选择前0,因此无论如何都要进行插入是没有意义的.一个简单IF @MAXLEADS IS NOT NULL就足够了:
SELECT TOP 1 @MAXLEADS=COUNT(*) FROM #pipeline GROUP BY opp_lead ORDER BY COUNT(*) DESC
IF @MAXLEADS IS NOT NULL BEGIN
INSERT INTO #YearlyEndCampaign(slno,LVL)
SELECT SEQ,0 FROM (SELECT TOP (@MAXLEADS) seq = ROW_NUMBER() OVER (ORDER BY number) FROM [master]..spt_values)S
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4528 次 |
| 最近记录: |