我试图插入每年周末的详细信息,如日期,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这个存储过程工作正常,我只需要将数据插入到我的问题中提到的我的表中! –