1
這裏是我的方法:調用存儲過程返回值到變量
create procedure sj_busdays_prevmonth @dtStartDate datetime, @dtEnddate datetime--, @busdays_month int output
as
return
SELECT Cast(
(DATEDIFF(dd, @dtStartDate, @dtEndDate) + 1)
-(DATEDIFF(wk, @dtStartDate, @dtEndDate) * 2)
-(CASE WHEN DATENAME(dw, @dtStartDate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @dtEndDate) = 'Saturday' THEN 1 ELSE 0 END)as int)
這裏是我的發言:
declare @nBusDays int
declare @dtStartDate datetime
declare @dtEndDate datetime
SET @dtStartDate = cast(CONVERT(VARCHAR(10),DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)),111) as datetime)
SET @dtEndDate = cast(CONVERT(VARCHAR(10),DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)),111) as datetime)
exec @nBusDays = sj_busdays_prevmonth @dtStartDate,@dtEndDate
print @nBusDays
這裏是我的結果:
0
它應該是23
,這裏發生了什麼?
如果你想要的數據從您應該使用OUTPUT參數,而不是返回值的過程返回。過程的返回值用於指示過程的執行狀態。在你的例子中,我實際上建議將它作爲內聯表值函數而不是過程。它比程序更具靈活性,只要它只是一個這樣的單一語句,它們就超級快。 –