USE [Vertragsverwaltung_20160404] GO /****** Object: UserDefinedFunction [dbo].[Get_Next_Kuendigungstermin] Script Date: 02.12.2016 09:08:53 ******/ DROP FUNCTION [dbo].[Get_Next_Kuendigungstermin] GO /****** Object: UserDefinedFunction [dbo].[Get_Next_Kuendigungstermin] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[Get_Next_Kuendigungstermin] (@ereignisnr int) Returns datetime AS BEGIN declare @start as datetime declare @ende as datetime declare @periode as integer declare @workdate datetime select @start=start, @ende=ende, @periode=periodizitaetnr from vertragsereignis where ereignisnr=@ereignisnr if @ende < '01.01.1901' set @ende='31.12.2099' if @periode = 15 begin select @start=datum, @ende=ende, @periode=periodizitaetnr from vertragsereignis where ereignisnr=@ereignisnr if @start > getdate() set @workdate=@start return @workdate end --PeriodizitaetNr Bezeichnung-- --9 jährlich --10 täglich --11 wöchentlich --12 monatlich --13 zwei-monatlich --14 halb-jährlich --15 einmalig --16 vierteljährlich set @workdate = @start while @workdate < @ende and @workdate < getdate() begin if @periode = 9 set @workdate=dateadd(yy,1,@workdate) if @periode = 10 set @workdate=dateadd(dd,1,@workdate) if @periode = 11 set @workdate=dateadd(ww,1,@workdate) if @periode = 12 set @workdate=dateadd(mm,1,@workdate) if @periode = 13 set @workdate=dateadd(mm,2,@workdate) if @periode = 14 set @workdate=dateadd(mm,6,@workdate) if @periode = 16 set @workdate=dateadd(qq,1,@workdate) end if @workdate > @ende set @workdate='01.01.1900' return @workdate end GO