SP未正确处理@AgeBand参数。 我如何传递该参数?
public MyClass(MyInterface myInterface) {}
private MyInterface myInterface;
...
public MyClass(MyInterface myInterface) {
this.myInterface = myInterface;
}
public void doTest() {
// do some processing
..
// then delegate
myInterface.doTest();
}
}
"' 50-54'' 55-59'"是问题。 请提出一些替代方案。
答案 0 :(得分:1)
条件b.AgeBand in (@AgeBand)
无效,
尝试使用CHARINDEX(b.AgeBand,@AgeBand) > 0
答案 1 :(得分:0)
你不能将数组传递给那样的存储过程,加倍使用双引号(")
您最好的选择是多次运行该程序(yuck,性能命中)或使用自制的Split功能或Sql Server 2016中的新String_Split
功能将阵列拆分出来
也许这样的事情(没有经过测试,脱离我的头脑)
Alter Procedure sp_Dialer_Analysis
@AgeBand Varchar(50),
@Gender Varchar(50),
@Weekday Varchar(50)
AS
BEGIN
Select @AgeBand,@Gender,@Weekday,SUM(RPC)
from TableA a
Cross Apply String_Split(@AgeBand, ',') As s
left join TableB b
on a.[Contact Info] = b.MSI
where a.date >= '2017-01-01'
and b.gender = @Gender
And b.ageband = s.value
and DATENAME(WEEKDAY,a.date) = @Weekday
END
Exec sp_Dialer_Analysis '50-54,55-59','F','Monday'
没有尝试过SHD的答案,但我认为它应该得到优点......并且可能是一个更好的答案
答案 2 :(得分:0)
我认为OP正在询问转义字符。
请尝试:Exec sp_Dialer_Analysis '''50-54'',''55-59''','F','Monday'