[英]Passing Parameter in Stored Procedure 1
SP未正確處理@AgeBand參數。 如何傳遞該參數?
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
left join TableB b
on a.[Contact Info] = b.MSI
where a.date >= '2017-01-01'
and b.gender = @Gender and b.AgeBand in (@AgeBand)
and DATENAME(WEEKDAY,a.date) = @Weekday
END
Exec sp_Dialer_Analysis "'50-54','55-59'",'F','Monday'
問題是“ '50 -54','55-59'”。 請提出一些替代方案。
條件b.AgeBand in (@AgeBand)
不起作用,
嘗試使用CHARINDEX(b.AgeBand,@AgeBand) > 0
您不能像這樣將數組傳遞到存儲過程中,因此請使用雙引號(“)加倍
最好的選擇是多次運行該過程(很糟糕,影響性能),或者使用自制的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的答案,但我認為表面活性劑應該是值得的...並且可能是更好的答案
我認為OP正在詢問轉義字符。
請嘗試以下方法: Exec sp_Dialer_Analysis '''50-54'',''55-59''','F','Monday'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.