1
MS SQL 함수를 Oracle로 변환하려고하는데 문제가 생겼습니다. 그들은 점차적으로 기능에 임시 테이블을 만드는 이유입니다. 점차적으로 추가 할 임시 테이블을 커서로 대체 할 수 없습니다. 사람이 어떻게 오라클이 쓰기 좋은 생각을 가지고 있습니다번역 도움말 MS SQL => Oracle
ALTER FUNCTION [dbo].[F_GetDateIntervalTable]
(
@OccurredFrom datetime,
@OccurredTo datetime,
@Interval decimal
)
RETURNS @Tbl table
(
[Dts] datetime
)
AS
BEGIN
DECLARE @Count int
--DECLARE @Tbl table([Dts] datetime)
DECLARE @Dts datetime
DECLARE @SeedDts datetime
SET @Count = 1
SET @Dts = DATEADD(MINUTE, FLOOR(DATEDIFF(MINUTE,0,@OccurredFrom)/@Interval)*@Interval, 0);
SET @SeedDts = DATEADD(MINUTE, FLOOR(DATEDIFF(MINUTE,0,@OccurredFrom)/@Interval)*@Interval, 0);
SET @OccurredTo = DATEADD(MINUTE, [email protected], @OccurredTo);
WHILE (@SeedDts < @OccurredTo)
BEGIN
SET @SeedDts = DATEADD(MINUTE, @Interval*(@Count-1), @Dts)
INSERT INTO @Tbl(Dts) VALUES(@SeedDts)
SET @Count = (@Count + 1)
END
RETURN
END
출력이 (매개 변수 지정)해야
:
@OccurredFrom = '2013-01-01',
@OccurredTo = '2013-01-02',
@Interval = 60
2013-01-01 00:00:00.000
2013-01-01 01:00:00.000
2013-01-01 02:00:00.000
2013-01-01 03:00:00.000
2013-01-01 04:00:00.000
2013-01-01 05:00:00.000
2013-01-01 06:00:00.000
2013-01-01 07:00:00.000
2013-01-01 08:00:00.000
2013-01-01 09:00:00.000
2013-01-01 10:00:00.000
2013-01-01 11:00:00.000
2013-01-01 12:00:00.000
2013-01-01 13:00:00.000
2013-01-01 14:00:00.000
2013-01-01 15:00:00.000
2013-01-01 16:00:00.000
2013-01-01 17:00:00.000
2013-01-01 18:00:00.000
2013-01-01 19:00:00.000
2013-01-01 20:00:00.000
2013-01-01 21:00:00.000
2013-01-01 22:00:00.000
2013-01-01 23:00:00.000
어떤 아이디어가 grealty 감사합니다!