Witaj
Gość
. Produkt:
<root>
gw-max
IBO_SZ
ZZ
•
Logowanie
GIGA Wiki
¶
Strona Główna
Losowa Strona
Nowa Strona
Wszystkie Strony
Kategorie
Nawigacja
Administracja
Zarządzanie plikami
Utwórz konto
Szukaj
»
Wstecz
Funkcja kalkulacji: SQL
Zmodyfikowana 2015/02/01 19:21
przez
Wojtek
Skategoryzowana jako
GW-MAX
,
GW-MAX_Czynsze
==Opis funkcji działania funkcji SQL( Nazwa, IleP, __P1__, __P2__, __P3__, __P4__ )== Funkcja wykonuje procedurę składową SQL i wynik działania tej funkcji jest zwracany jako wynik funkcji. Funkcja pozwala na wykonanie dowolnego kodu SQL na serwerze oraz wyliczenie i zwrócenie dowolnej wartości dostępnej z poziomu procedury SQL. Wywoływana nazwa procedury składa się z nazwy stałej 'YCNSQL_' i nazwy podawanej w parametrze funkcji '''Nazwa'''. Przykładowo wywołujemy z poziomu formuły kalkulacyjnej SQL( 'TestProc', 1, '09876543') powoduje wywołanie procedury składowej o nazwie z listą parametrów @@ [dbo].[YCNSQL_TestProc] @Ret varchar(1024) OUTPUT, @DataNaliczenia int, @Mc int, @Rok int, @IdLokalSkladnikCzynsz int, @Sygnatura varchar(80), @Test int, @IdLogger int, @Lokal varchar(20) = null @@ gdzie parametr @Lokal jest tym jaki przekazujemy do procedury (w tym przypadku jest to wartość '09876543') a pozostałe parametry są automatycznie przekazywane przez program wywołujący procedurę SQL. Jak widzimy procedura składowa ma pełne informacje w jaki miesiąc, rok i z jakiego składnika lokalu jest wywoływana, daje to dużą elastyczność w wykorzystaniu możliwości. W prostych przypadkach procedura służy do pobrania jakiś wartości z SQL, może też służyć jako pełny kod zapisu do kartoteki naliczenia wraz z wystawieniem dokumentów not. ==Opis parametrów funkcji== #'''Nazwa''' - parametr określa drugi człon nazwy procedury składowej (pierwszy człon zawsze nazwa się ''' 'dbo.YCNSQL_' ''') #'''IleP''' - liczba określająca ilość parametrów przekazywanych do procedury składowej SQL. Domyślna wartość to 0 #'''__P1__''' do '''__P4__''' - opcjonalne parametry przekazywane do procedury składowej SQL ==Szczegółowy opis działania funkcji== * operator przeliczający musi mieć uprawnienia w SQL do wykonania procedury i całego kodu zawartego w procedurze * początek nazwy wywoływanej procedury musi się zaczynać od ''' 'dbo.YCNSQL_' ''' dalszy ciąg nazwy jest argumentem '''Nazwa''' funkcji * każda procedura musi zawierać następujące parametry @Ret varchar(1024) OUTPUT, @DataNaliczenia int, @Mc int, @Rok int, @IdLokalSkladnikCzynsz int, @Sygnatura varchar(80), @Test int, @IdLogger int a kolejne są typu varchar(..) maksymalnie 4 z wartością domyślną null * procedura zwraca wynik za pomocą parametru @ret typu varchar(1024), w przypadku liczby znaki dziesiętne oddzielamy kropką * w każdej procedurze musi być ustawiona wartość zmiennej @ret * parametr '''__IleP__''' musi być ustawiony poprawnie względem kodu procedury SQL ===Przykład kodu procedury składowej SQL === @@ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==================================================================================== -- Author: Giga Katowice -- Description: Procedura wywoływane w formułach kalkulacji czynszu -- ==================================================================================== create procedure [YCNSQL_TestProc] @Ret varchar(1024) OUTPUT, @DataNaliczenia int, @Mc int, @Rok int, @IdLokalSkladnikCzynsz int, @Sygnatura varchar(80), @Test int, @IdLogger int, @Lokal varchar(20) = null , @Nieruchomosc varchar(20) = null as Begin -- ustawiam wartość losową żeby coś było zmiennego set @Ret = LTrim( Str( round( RAND()*1000, 0))) -- można obsłużyć logger jaki jest dostępny w GwMax if @IdLogger <> 0 begin insert into YDziennik_Katalog_Lista ( YDKL_IdDziennik_Katalog, YDKL_Lp, YDKL_Punkt_Kontrolny, YDKL_Data, YDKL_Godz, YDKL_Opis) select @IdLogger, 1+isnull((select Max( X.YDKL_Lp) from YDziennik_Katalog_Lista X where X.YDKL_IdDziennik_Katalog = @IdLogger),0), 0, Convert( int, GetDate()+36163), (100*(DatePart(ss, GetDate())+(60*DatePart(mm, GetDate()))+(3600*DatePart(hh, GetDate()))))+1, 'To jest zarejestrowany opis wywołania funkcji sql w naliczeniu czynszu, parametry @Lokal=' + isnull( @Lokal, 'null')+', @Nieruchomosc=' + isnull( @Nieruchomosc, 'null') end ---- przykład aktualizacji update YLokal set YLo_Uwagi = isnull( YLo_Uwagi, '') + ' wyliczyłem składnik: ' + @Ret where YLo_Akronim = @Lokal return 0 End @@ ==Przykłady wywołania== @@ sql('TestProc', 1, '00100010023') @@ Przykład wywołanie z jednym parametrem opisany w procedurze jako @Lokal, parametr @Nieruchomosc przyjmuje wartość domyślną null @@ sql('TestProc', 2, '00100010023', 'AAAAA') @@ Przykład wywołanie z dwoma parametrami
Meta Keywords:
Meta Description:
Change Comment:
ScrewTurn Wiki
wersja 3.0.5.640. Ikony stworzone przez
FamFamFam
.