У меня есть блок кода для функции пытается преобразовать его из Oracle в SQL Server:Loops и курсоры в Oracle Into Sql Server
Oracle Код:
кодIf nDaysAfter = 0 then
while (IsHoliday(dNextDay) = 1) or (RTrim(To_Char(dNextDay, 'DAY')) in ('SATURDAY','SUNDAY')) Loop
dNextDay := dNextDay + 1;
End Loop;
RETURN dNextDay;
Else dNextDay := dNextDay + 1;
For i in 1..nDaysAfter Loop
while (IsHoliday(dNextDay) = 1) or (RTrim(To_Char(dNextDay, 'DAY')) in ('SATURDAY','SUNDAY')) Loop
dNextDay := dNextDay + 1;
End Loop;
dNextDay := dNextDay + 1;
End Loop;
RETURN dNextDay - 1;
End if;
Sql Server:
If @nDaysAfter = 0 begin
while (IsHoliday(@dNextDay) = 1) or (RTrim(convert(char,@dNextDay, 'DAY')) in ('SATURDAY','SUNDAY')) Begin
SET @dNextDay = @dNextDay + 1;
End;
RETURN @dNextDay;
End
Else BEGIN
SET @dNextDay = @dNextDay + 1;
Declare i CURSOR for 1..nDaysAfter Loop
while (IsHoliday(@dNextDay) = 1) or (RTrim(convert(char,@dNextDay, 'DAY')) in ('SATURDAY','SUNDAY')) Begin
SET @dNextDay = @dNextDay + 1;
End;
SET @dNextDay = @dNextDay + 1;
Fetch i INTO;
End;
Close i;
Deallocate i;
RETURN @dNextDay - 1;
End
У меня возникли проблемы, превращающие эту строка: Declare i CURSOR for 1..nDaysAfter Loop
его выделить под номером 1. (nDaysAfter это объявить как Float) Спасибо Я буду признателен, как много помощи поз sible.
Что это за цикл? Это звучит как задание для таблицы календаря вместо циклов. –
Курсоры намного лучше в Oracle, чем SQL-сервер. Я попытался бы сделать это по-другому, чтобы вы не использовали курсоры. Во-вторых, идея таблицы календаря вместо всех этих функций повторяется снова и снова. – HLGEM