-- Skrypt pobrany ze strony http://strefa.guzowski.info -- Opis do kodu: -- http://strefa.guzowski.info/archives/30,2006,12,13.html CREATE FUNCTION dbo.FnDataAccess_TSQL (@wiersz1 int, @wiersz2 int) RETURNS numeric(10,5) AS BEGIN -- pola DECLARE @c INT, @result NUMERIC(10,5), @nazwa_glowna_A NVARCHAR(100), @nazwa_skr_A NVARCHAR(100), @miejscowosc_A NVARCHAR(100), @adres_A NVARCHAR(100), @nr_lokalu_A NVARCHAR(100), @nip_A NVARCHAR(100), @kod_poczt_A NVARCHAR(100), @nazwa_glowna_B NVARCHAR(100), @nazwa_skr_B NVARCHAR(100), @miejscowosc_B NVARCHAR(100), @adres_B NVARCHAR(100), @nr_lokalu_B NVARCHAR(100), @nip_B NVARCHAR(100), @kod_poczt_B NVARCHAR(100); SET @c = 0; SET @result = 0.0; SET @nazwa_glowna_A = ''; SET @nazwa_skr_A = ''; SET @miejscowosc_A = ''; SET @adres_A = ''; SET @nr_lokalu_A = ''; SET @nip_A = ''; SET @kod_poczt_A = ''; SET @nazwa_glowna_B = ''; SET @nazwa_skr_B = ''; SET @miejscowosc_B = ''; SET @adres_B = ''; SET @nr_lokalu_B = ''; SET @nip_B = ''; SET @kod_poczt_B = ''; -- pobranie danych SELECT TOP 1 @nazwa_glowna_A = nazwa_glowna, @nazwa_skr_A = nazwa_skr, @miejscowosc_A = miejscowosc, @adres_A = adres, @nr_lokalu_A = nr_lokalu, @nip_A = nip, @kod_poczt_A = kod_poczt FROM Dane_adresowe WHERE wiersz IN (@wiersz1, @wiersz2) ORDER BY wiersz; SELECT TOP 2 @nazwa_glowna_B = nazwa_glowna, @nazwa_skr_B = nazwa_skr, @miejscowosc_B = miejscowosc, @adres_B = adres, @nr_lokalu_B = nr_lokalu, @nip_B = nip, @kod_poczt_B = kod_poczt FROM Dane_adresowe WHERE wiersz IN (@wiersz1, @wiersz2) ORDER BY wiersz; DECLARE @adres_A_Length INT, @adres_B_Length INT, @miejscowosc_A_Length INT, @miejscowosc_B_Length INT; -- zwrocenie wyniku - przez kilka warunkow SET @adres_A_Length = LEN(@adres_A); SET @adres_B_Length = LEN(@adres_B); SET @miejscowosc_A_Length = LEN(@miejscowosc_A); SET @miejscowosc_B_Length = LEN(@miejscowosc_B); IF (@nazwa_glowna_A = @nazwa_glowna_B AND @nazwa_skr_A = @nazwa_skr_B) BEGIN IF (@miejscowosc_A = @miejscowosc_B) BEGIN IF (@adres_A_Length = @adres_B_Length) BEGIN RETURN 0.7*@miejscowosc_A_Length*@miejscowosc_B_Length/2; END END ELSE BEGIN RETURN 0; END END ELSE BEGIN IF (@miejscowosc_A_Length > 0 AND @miejscowosc_B_Length > 0) BEGIN RETURN @adres_A_Length*@adres_B_Length; END ELSE BEGIN RETURN(0); END END RETURN (@result); END