Я пытаюсь вставить ежегодные детали в выходные дни, такие как дата, DAYNAME в таблицу SQL Server, используя следующую хранимую процедуруВставка выходных в таблицу SQL Server
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
и исполняющего его с помощью
exec usp_AddOfficeHolidays 'Saturday,Sunday'
, которая возвращает следующий результат
Это отлично работает, НО я не смог добавить/вставить эти данные в следующей таблице
сталкиваюсь следующее сообщение об ошибке при попытке получить доступ к деталям уикэнд его псевдонимом КТР
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
Мне нужна помощь здесь! Мне просто нужно вставить данные в мою указанную таблицу!
Спасибо!
'если (выберите COUNT (*) из tblWeekSettings) < 1' ->', если не существует (выберите 1 из TBL ...) ' –
Показать сообщение об ошибке полное имя с зр, номер строки и так далее. –
@ivanStarostin Эта хранимая процедура WORKS отлично, мне просто нужно вставить данные в таблицу, о которых я упомянул в своем вопросе! –