UFN_RESERVATION_GETITINERARIESSTRING
Returns a string containing itinerary information including itinerary names, item names, and item dates and times.
Return
Return Type |
---|
nvarchar(max) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_RESERVATION_GETITINERARIESSTRING(@ID uniqueidentifier)
returns nvarchar(max)
as begin
declare @NUMBEROFDAYS int;
declare @ARRIVALDATE date;
declare @LASTITINERARYITEMDATE date;
declare @ITINERARIES nvarchar(max);
declare @ITINERARYID uniqueidentifier;
declare @ITINERARYNAME nvarchar(154);
declare @CRLF char(2);
set @CRLF = char(13) + char(10);
set @ITINERARIES = '';
select @ARRIVALDATE = ARRIVALDATE from dbo.RESERVATION where ID = @ID;
select
@LASTITINERARYITEMDATE = max(ITINERARYITEM.STARTDATE)
from
dbo.ITINERARYITEM
inner join
dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
where
ITINERARY.RESERVATIONID = @ID;
set @NUMBEROFDAYS = datediff(day, @ARRIVALDATE, @LASTITINERARYITEMDATE);
declare ITINERARIES_CURSOR cursor local fast_forward for
select
ID,
NAME
from
dbo.ITINERARY
where
RESERVATIONID = @ID
order by
NAME;
open ITINERARIES_CURSOR;
fetch next from ITINERARIES_CURSOR
into @ITINERARYID, @ITINERARYNAME;
while @@FETCH_STATUS = 0
begin
if len(@ITINERARIES) = 0
set @ITINERARIES = @ITINERARYNAME;
else
set @ITINERARIES = @ITINERARIES + @CRLF + @CRLF + @ITINERARYNAME;
declare @ITEMNAME nvarchar(100);
declare @STARTDATE date;
declare @STARTTIME dbo.UDT_HOURMINUTE;
declare @PREVIOUSSTARTDATE date;
set @PREVIOUSSTARTDATE = null;
declare ITINERARYITEMS_CURSOR cursor local fast_forward for
select
NAME,
STARTDATE,
STARTTIME
from
dbo.ITINERARYITEM
where
ITINERARYID = @ITINERARYID
order by
STARTDATE,
STARTTIME,
NAME;
open ITINERARYITEMS_CURSOR;
fetch next from ITINERARYITEMS_CURSOR
into @ITEMNAME, @STARTDATE, @STARTTIME;
while @@FETCH_STATUS = 0
begin
if @PREVIOUSSTARTDATE is null or @STARTDATE <> @PREVIOUSSTARTDATE
begin
set @ITINERARIES = @ITINERARIES + @CRLF;
if @NUMBEROFDAYS > 0
set @ITINERARIES = @ITINERARIES + @CRLF + char(9) + convert(nchar(12), @STARTDATE, 107);
end
set @ITINERARIES = @ITINERARIES + @CRLF + char(9) + char(9) + dbo.UFN_HOURMINUTE_DISPLAYTIME(@STARTTIME) + char(9) + @ITEMNAME;
set @PREVIOUSSTARTDATE = @STARTDATE;
fetch next from ITINERARYITEMS_CURSOR
into @ITEMNAME, @STARTDATE, @STARTTIME;
end
close ITINERARYITEMS_CURSOR;
deallocate ITINERARYITEMS_CURSOR;
fetch next from ITINERARIES_CURSOR
into @ITINERARYID, @ITINERARYNAME;
end
close ITINERARIES_CURSOR;
deallocate ITINERARIES_CURSOR;
return @ITINERARIES;
end