DB_SET_PROCESS_PARAMS
Akcia DB_SET_PROCESS_PARAMS
Funkcia
Akcia pre nastavanie hodnôt pomenovaných parametrov, alebo zrušenie parametrov "kontextu".
Pozn: Táto vlastnosť je podporená iba pre PostgreSQL a Oracle databázy.
Deklarácia
DB_SET_PROCESS_PARAMS paramsRecParametre
paramsRec | in | Identifikátor celej lokálnej štruktúry. Štruktúrovaná hodnota má definované dva stĺpce:
|
Hodnota paramName definuje názov parametra. Hodnota paramValue definuje hodnotu parametra. Prípustné kombinácie hodnôt a ich interpretáciu znázorňuje nasledujúca tabuľka.
Vplyv na výsledok | paramName | paramValue |
Vloží alebo aktualizuje hodnotu parametra | zadané | zadané |
Zruší parameter | zadané | (neplatná hodnota) |
Ignoruje (nie je súčasťou požiadavky na zmenu) | (neplatná hodnota) | zadané |
Ignoruje (nie je súčasťou požiadavky na zmenu) | (neplatná hodnota) | (neplatná hodnota) |
Upozornenie: Ak nastane situácia, že názvy parametrov sa pri jednom volaní akcie opakujú, tak dochádza k nedefinovanému správaniu!
Popis
"Kontext" je jednoznačne priradený skupine procesov. Skupina procesov je tvorená:
vždy samostatným procesom typu D2000 EventHandler (bez použitia parametra --batch_mode) alebo
v prípade aktívnych schém trojicou procesov D2000 HI (HIP), HIS a D2000 Server Event Executor (SEE).
Ak je proces D2000 EventHandler spustený s parametrom --batch_mode, tak "Kontext" je jednoznačne priradený skupine eventov, ktoré sú otvorené s rovnakým číslom inštancie (OPENEVENT), nie celému procesu. Parameter umožní beh viacerých eventov na jednom Event Handleri, pričom každý môže používať vlastný "Kontext". V prípade rovnakých čísel inštancií je "Kontext" medzi nimi zdieľaný (je spoločný) a podmienky vykonávania databázových operácií sú preto rovnaké.
Kontext predstavuje skupinu jednoznačne pomenovaných parametrov, pričom každý parameter má definovanú hodnotu. Vzniká prvým použitím akcie DB_SET_PROCESS_PARAMS. Spravuje ho proces D2000 Server. Kontext zaniká ukončením posledného procesu z príslušnej skupiny. Obsah kontextu je automaticky replikovaný na všetky bežiace procesy D2000 DBManager.
D2000 DbManager pred vykonaním ľubovoľného databázového príkazu, ktorý bol iniciovaný v rámci kontextu, vkladá jeho obsah do tabuľky D2000_PROCESS_PARAMS. Meno parametra vkladá do stĺpca PARAM_NAME a jeho hodnotu do stĺpca PARAM_VALUE. Tabuľku D2000_PROCESS_PARAMS DbManager vytvára pri jej prvom použití.
Poznámka 1
Akciu je možné využiť na tvorbu parametrizovaných pohľadov, pričom parametre pre pohľad pochádzajú práve z tabuľky D2000_PROCESS_PARAMS, ktorú automaticky nastavuje proces DbManager podľa kontextu, v ktorom je databázový príklad použitý.
Poznámka 2
Tabuľka D2000_PROCESS_PARAMS je Global Temporary Table. Jednotlivé sessions v nej vidia iba riadky, ktoré tam zapísali. Po zrušení session, sa riadky viazané na danú session z tabuľky automaticky odstránia. Bližší popis, ako aj jej DLL, je v dokumentácii ku Global Temporary Table.
Príklad
; príklad overí výsledok akcie DB_SET_PROCESS_PARAMS prečítaním tabuľky D2000_PROCESS_PARAMS
; insert/update parametra viazaného na proces (aktualizuje tabuľku D2000_PROCESS_PARAMS)
RECORD NOALIAS (SD.Params) _params
TEXT _cmd ; SQL select
INT _retCode ; návratová hodnota
_params[1]^PARAM_NAME := "NAME"
_params[1]^PARAM_VALUE := "SELF.DBM"
DB_SET_PROCESS_PARAMS _params
REDIM _params[0]
_cmd := "SELECT PARAM_NAME, PARAM_VALUE FROM D2000_PROCESS_PARAMS WHERE PARAM_NAME = 'NAME'"
; prečíta obsah tabuľky
SQL_SELECT DBC_TEST_DSN, _retCode, 1000, _cmd BIND _params
IF _retCode = _ERR_NO_ERROR THEN
; štruktúra _params je naplnená, obsahuje jeden riadok
ELSE
; chyba
ENDIF Súvisiace odkazy
Súvisiace stránky: