|
TSQL602Statement | Přehled CDK komponent | TSQL602EventAction |
Zjednodušená deklarace třídy:
type TSQL602StoredProc = class(TComponent) published property Connection : TSQL602Connection; property ProcName : string; property ResultName : string; property Params : TParams; property DataSet : TDataSet; property Options : TSQL602SSOptions; property Detached : Boolean; property AfterExecute : TNotifyEvent; // událost public property Result : TParam; procedure CheckParams; virtual; procedure ClearAllParams; procedure SetParam(Name : string; Value : Integer; pType : TParamType = ptInput); overload; procedure SetParam(Name : string; Value : string; pType : TParamType = ptInput); overload; procedure SetParam(Name : string; Value : string; Size : Integer; pType : TParamType); overload; procedure SetParam(Name : string; vType : TFieldType; var Value; Size : Integer; pType : TParamType = ptInput); overload; procedure Execute; virtual; function ParamByName(const ParamName : string) : TParam; end;
Spojení na server pomocí TSQL602Connection. Změna této vlastnosti nebo deaktivace spojení s SQL serverem vyvolá reset komponenty.
Jméno uložené procedury, změna této vlastnosti vyvolá reset komponenty.
Seznam parametrů uložené procedury obsahující proměnné parametry. Specifikuje jména, datové typy (ft...), typy parametrů (pt...) a hodnoty argumentů. Je-li ve vlastnosti Options nastaven příznak ssoAutoParams, naplní se po změně vlastnosti ProcName vlastnost Params seznamem jmen a typů parametrů uložené procedury automaticky, stejně jako při zavolání metody CheckParams. Ručně lze seznam plnit také pomocí metod SetParam.
Hodnoty parametrů mohou být dány hodnotami sloupců v aktuálním záznamu datasetu, který specifikuje vlastnost DataSet. Viz popis u TSQL602Statement.
Jméno parametru, který představuje výstupní hodnotu uložené SQL funkce. Implicitně je pro výstupní hodnotu použito jméno __Result__ (je potřeba např. v Tparam pro tento parametr).
Parametr, který představuje výsledek uložené SQL funkce.
Je-li tato vlastnost nastavena, bude se procedura provádět na SQL serveru v samostatném vlákně (odpovídá CALL DETACHED ...). Je-li takto volána funkce, výsledek se nezapíše do Result a bude ztracen. Je-li takto volána procedura, výstupní parametry budou ztraceny.
V současné verzi může být hodnotou vlastnosti Options pouze příznak:
ssoAutoParams | Po změně vlastnosti ProcName se automaticky zaktualizuje seznam Params a vyplní se jména, typy a délky všech parametrů. Zjištění typů parametrů vyžaduje komunikaci s SQL serverem, při pomalém síťovém spojení může nastavení tohoto příznaku nepatrně zdržovat provedení příkazu. |
Pro vytvoření parametru odpovídajícímu 602sql typu INT
Pro vytvoření vstupního parametru odpovídajícímu 602sql typu CHAR(N)
Pro vytvoření výstupního parametru odpovídajícímu 602sql typu CHAR(N)
Pro ostatní případy. Metody nastavují vlastnosti jednotlivých parametrů:
Name | Jméno parametru |
Value | Hodnota parametru |
vType | Libovolný typ hodnoty ftFloat, ftDate, ftMemo, ftBlob aj. v případě, že nemůžete použít jednodušší předchozí varianty. |
Size | Délka řetězce - povinné pouze u výstupních parametrů pro 602sql typy CHAR(N) nebo BINARY(N), u vstupních parametrů pro 602sql typy proměnné délky (CLOB, BLOB), u výstupních parametrů těchto typů proměné délky není nutné uvádět |
pType | Typ parametru ptInput pro vstupní parametr, ptOutput pro výstupní parametr, ptInputOutput pro INOUT parametr nebo ptResult pro výsledek funkce |
Metoda provede analýzu hlavičky uložené procedury z vlastnosti ProcName a vytvoří a naplní seznam Params jmény, typy a délkami parametrů. V případě funkce vytvoří i parametr jména ResultName pro výsledek funkce. Je třeba poté doplnit pouze vlastnost parametru Value u vstupních parametrů resp. číst u parametrů výstupních..
Nastaví hodnotu všech parametrů ze seznamu Params na nil.
Metoda vrací popis parametru zadaného jména.
Metoda spouští vlastní provedení uložené procedury nebo funkce.
Událost je vyvolána po úspěšném provedení uložené procedury. Argumentem je komponenta TSQL602StoredProc, která událost vyvolala.
Na serveru je uložená SQL funkce GetBool, která má vstupní parametr cislo typu Integer a vrací Boolean.
... with SQL602StoredProc1 do begin ProcName := 'GetBool'; // jméno rutiny ResultName := 'result'; // jméno parametru obsahujícího výsledek funkce // 1.varianta vytvoření seznamu parametrů CheckParams; // vytvoří seznam parametrů ParamByName('cislo').Value := 2; // hodnota vstupního parametru { 2.varianta SetParam('cislo',2); SetParam('result',ftBoolean,res,0,ptOutput); } Execute; ShowMessage(ParamByName('result').Value); end;
TSQL602Statement | Přehled CDK komponent | TSQL602EventAction |