我試圖插入每年週末的詳細信息,如日期,DAYNAME到使用插入到週末SQL Server表
exec usp_AddOfficeHolidays 'Saturday,Sunday'
使用以下存儲過程
alter procedure usp_AddOfficeHolidays
@paramName NVARCHAR(max)
as
begin
DECLARE @Year AS INT,
@FirstDateOfYear DATETIME,
@LastDateOfYear DATETIME
-- You can change @year to any year you desire
SELECT @year = 2016
SELECT @FirstDateOfYear = DATEADD(yyyy, @Year - 1900, 0)
SELECT @LastDateOfYear = DATEADD(yyyy, @Year - 1900 + 1, 0)
-- Creating Query to Prepare Year Data
--declare dayN varchar(max)
if (select COUNT(*) from tblWeekSettings) < 1
begin
;WITH cte AS
(
SELECT
1 AS DayID,
@FirstDateOfYear AS FromDate,
DATENAME(dw, @FirstDateOfYear) AS Dayname
UNION ALL
SELECT
cte.DayID + 1 AS DayID,
DATEADD(d, 1 ,cte.FromDate),
DATENAME(dw, DATEADD(d, 1 ,cte.FromDate)) AS Dayname
FROM cte
WHERE DATEADD(d, 1, cte.FromDate) < @LastDateOfYear
)
SELECT FromDate AS Date, Dayname
FROM CTE
WHERE DayName IN (SELECT Param FROM dbo.fn_MVParam(@paramName,','))
OPTION (MaxRecursion 370)
end
else
begin
Select 'Exists'
end
end
並執行一個SQL Server表
其返回以下結果
這工作完全正常,但我一直無法添加/插入這些細節如下表
我面對下面的錯誤到,當我試圖通過它的別名CTE訪問WEEKEND細節
The statement terminated. The maximum recursion 100 has been exhausted before statement completion
雖然我已經添加了條款
OPTION (MaxRecursion 370)
建議通過這些鏈接,我的堆棧溢出發現
- The maximum recursion 100 has been exhausted before statement completion
- The statement terminated. The maximum recursion 100 has been exhausted before statement completion
EDIT
基本上我所面臨的特定錯誤,當我嘗試這樣的事情
alter procedure usp_AddOfficeHolidays
@paramName NVARCHAR(max)
as
begin
----------------------------------------------------------
DECLARE @Year AS INT,
@FirstDateOfYear DATETIME,
@LastDateOfYear DATETIME
-- You can change @year to any year you desire
SELECT @year = 2016
SELECT @FirstDateOfYear = DATEADD(yyyy, @Year - 1900, 0)
SELECT @LastDateOfYear = DATEADD(yyyy, @Year - 1900 + 1, 0)
-- Creating Query to Prepare Year Data
--declare dayN varchar(max)
if (select COUNT(*) from tblWeekSettings) < 1
begin
;WITH cte AS (
SELECT 1 AS DayID,
@FirstDateOfYear AS FromDate,
DATENAME(dw, @FirstDateOfYear) AS Dayname
UNION ALL
SELECT cte.DayID + 1 AS DayID,
DATEADD(d, 1 ,cte.FromDate),
DATENAME(dw, DATEADD(d, 1 ,cte.FromDate)) AS Dayname
FROM cte
WHERE DATEADD(d,1,cte.FromDate) < @LastDateOfYear
)
SELECT FromDate AS Date, Dayname
FROM CTE
WHERE DayName IN(SELECT Param FROM dbo.fn_MVParam(@paramName,','))
insert into tblWeekSettings(DayNo,WeekDayName,Dates)
values('',Dayname,Date)
OPTION (MaxRecursion 370)
end
else
begin
Select 'Exists'
end
--select cte
-----------------------------------------------------------
end
An y在這裏的幫助真的很感謝!我只需要將數據插入到指定的表中!
謝謝!
'如果(SELECT COUNT(*)從tblWeekSettings)< 1' ->'如果不存在(選擇1從TBL ...)用菌名,行號等等' –
顯示完整的錯誤消息。 –
@ivanStarostin這個存儲過程工作正常,我只需要將數據插入到我的問題中提到的我的表中! –