USP_CREATEORUPDATE_BUILDFULLADDRESS
This functions creates or updates dbo.UFN_BUILDFULLADDRESS.
Definition
Copy
CREATE procedure dbo.USP_CREATEORUPDATE_BUILDFULLADDRESS
with execute as caller
as
set nocount on;
declare @SQL nvarchar(max);
declare @CREATEORALTER nvarchar(7);
if exists(select object_id from sys.objects where type = 'FN' and name = 'UFN_BUILDFULLADDRESS')
set @CREATEORALTER = 'alter ';
else
set @CREATEORALTER = 'create ';
set @SQL = @CREATEORALTER + 'function dbo.UFN_BUILDFULLADDRESS(@ADDRESSID uniqueidentifier, @ADDRESSBLOCK nvarchar(150), @CITY nvarchar(50), @STATEID uniqueidentifier, @POSTCODE nvarchar(12), @COUNTRYID uniqueidentifier) returns nvarchar(300) with execute as caller' + nchar(13);
set @SQL = @SQL + '/*This code was auto-generated by calling dbo.USP_CREATEORUPDATE_BUILDFULLADDRESS on ' + cast(getdate() as nvarchar) + '. */'+ nchar(13);
set @SQL = @SQL + ' as begin' + nchar(13);
set @SQL = @SQL + 'declare @COUNTRYADDRESSFORMAT uniqueidentifier'+ nchar(13);
set @SQL = @SQL + '/*if @COUNTRYID is null*/' + nchar(13);
set @SQL = @SQL + '/*get default country for system?*/' + nchar(13);
set @SQL = @SQL + '/*based on country figure out how to format the address*/' + nchar(13);
set @SQL = @SQL + 'set @ADDRESSBLOCK = coalesce(@ADDRESSBLOCK, '''');' + nchar(13);
set @SQL = @SQL + 'set @CITY = coalesce(@CITY, '''');' + nchar(13);
set @SQL = @SQL + 'set @POSTCODE = coalesce(@POSTCODE, '''');' + nchar(13);
set @SQL = @SQL + 'select @COUNTRYADDRESSFORMAT = COUNTRYADDRESSFORMATID from dbo.COUNTRY where ID = @COUNTRYID' + nchar(13);
set @SQL = @SQL + nchar(13);
declare @ID uniqueidentifier;
declare @FORMATNAME nvarchar(40);
declare @FORMATSQLFUNCTION nvarchar(200);
declare COUNTRYADDRESSFORMAT_CURSOR cursor local fast_forward for
select
ID,
FORMATNAME,
FORMATSQLFUNCTION
from
dbo.COUNTRYADDRESSFORMAT
order by
SEQUENCE;
open COUNTRYADDRESSFORMAT_CURSOR;
fetch next from COUNTRYADDRESSFORMAT_CURSOR
into @ID, @FORMATNAME, @FORMATSQLFUNCTION;
-- Check @@fetch_status to see if there are any more rows to fetch.
while @@fetch_status = 0 begin
set @SQL = @SQL + 'if @COUNTRYADDRESSFORMAT = '''+cast(@ID as nvarchar(36))+ ''''+ nchar(13);
set @SQL = @SQL + 'return dbo.'+@FORMATSQLFUNCTION+'(@ADDRESSID, @ADDRESSBLOCK,@CITY,@STATEID,@POSTCODE,@COUNTRYID)'+ nchar(13);
set @SQL = @SQL + nchar(13);
-- This is executed as long as the previous fetch succeeds.
fetch next from COUNTRYADDRESSFORMAT_CURSOR
into @ID, @FORMATNAME, @FORMATSQLFUNCTION;
end
close COUNTRYADDRESSFORMAT_CURSOR;
deallocate COUNTRYADDRESSFORMAT_CURSOR;
set @SQL = @SQL + 'return ''''';
set @SQL = @SQL + nchar(13);
set @SQL = @SQL + 'end';
exec (@SQL);