Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

Akcia DB_UPDATE a DBS_UPDATE


Funkcia
Modifikácia existujúceho riadku (riadkov) v databáze.


Deklarácia


Blok kódu
languageesl
themeConfluence
 DB_UPDATE handleIdent_Int, rowIdent, retCodeIdent_Int [WHERE strExpression_Str [BINDIN varIdent1, varIdent2, ... ]] [ORAHINT hintIdent_Str] 

 DB_UPDATE handleIdent_Int, rowIdent, retCodeIdent_Int [WHERE strExpression_Str [BINDIN structRowIdent]] [ORAHINT hintIdent_Str] 

 DBS_UPDATE dbObjIdent, rowIdent, retCodeIdent_Int [WHERE strExpression_Str [BINDIN varIdent1, varIdent2, ... ]] [TRANS transHandle_Int] [ORAHINT hintIdent_Str] 

 DBS_UPDATE dbObjIdent, rowIdent, retCodeIdent_Int [WHERE strExpression_Str [BINDIN structRowIdent]] [TRANS transHandle_Int] [ORAHINT hintIdent_Str] 


 


alebo


 



Blok kódu
languageesl
themeConfluence
DB_UPDATE handleIdent_Int, structIdent, retCodeIdent_Int [ORAHINT hintIdent_Str] 
 
DBS_UPDATE dbObjIdent, structIdent, retCodeIdent_Int [TRANS transHandle_Int] [ORAHINT hintIdent_Str] 


Parametre


handleIdent_IntinIdentifikátor typu Int - (handle) spojenia s databázou (DB_CONNECT).
dbObjIdentinOdkaz na objekt typu Tabuľka.
rowIdentinIdentifikátor jedného riadku štruktúry (vkladaný riadok).
structIdentin Identifikátor celej štruktúry (vkladané riadky).
retCodeIdent_IntoutNávratová hodnota typu Int - úspešnosť akcie.
strExpression_StrinVýraz typu String, ktorý identifikuje modifikované riadky. Ak je výraz parametrizovaný, tak kľúčové slovo BINDIN a hodnoty parametrov (structRowIdent alebo varIdent1, varIdent2, ...) sú povinné.
varIdent1,
varIdent2, ...
inzoznam objektov, konštánt alebo lokálnych premenných, ktoré špecifikujú hodnoty parametrov  parametrizovaného SQL výrazu strExpression_Str.
structRowIdentinOdkaz na riadok lokálnej premennej typu Record alebo na riadok štruktúrovanej premennej. Hodnoty riadkov špecifikujú hodnoty parametrov parametrizovaného SQL výrazu strExpression_Str.
transHandle_IntinIdentifikátor Pripojenia na databázu.
hintIdent_StrinVýraz typu String, ktorý definuje Oracle SQL hint. Ten je použitý ako inštrukcia pre optimalizátor výkonu SQL príkazu. Zapisuje hodnotu bez obaľujúcich znakov /*+ <orahint> */.
Príklad použitia je uvedený tu.


Návratový kód
Hodnota parametra retCodeIdent_Int - pozri tabuľku chybových stavov. Je možné získať rozšírenú informáciu o chybe.
Popis

Databáza musí byť otvorená s prístupom _DB_MODIFY. Podobne ako pri akcii DB_READ ( DBS_READ), môžu byť modifikované riadky určené dvoma spôsobmi:

  1. Nastavením kľúčovej položky v riadku štruktúry (rowIdent), resp. v celej štruktúre (structIdent). Nastavenie musí byť realizované pred akciou DB_UPDATE. Položka musí byť označená ako kľúč pri definícii objektu typu Tabuľka. Potom sa v databáze hľadá riadok, ktorý má zhodnú hodnotu pre kľúčovú položku a tento je modifikovaný. Vkladaný riadok alebo štruktúra musia mať korektný typ štruktúry. Všetky položky každého vkladaného riadku musia mať platné hodnoty.
  2. Hodnotou výrazu strExpression_Str, ktorý predstavuje klauzulu WHERE pre SQL príkaz UPDATE, ktorý vykonáva zmenu databázy. V tomto prípade je hodnota kľúčovej položky v štruktúre nepoužitá.

Pokiaľ nie je zadaný (alebo je prázdny) výraz strExpression_Str ani nie je zadefinovaný kľúč pri definícii objektu typu Tabuľka, tak akcia vráti chybu _ERR_TRANS_ERROR (11) a premenná _ERR_NR_TRANS_EX bude mať hodnotu BAD_CONDITION.

Pozn: odporúčame používať verziu bez výrazu strExpression_Str - Oracle pri použití výrazu krátkodobo zamkne aktualizovanú tabuľku ako aj všetky tabuľky, do ktorých má aktualizovaná tabuľka foreign indexy. Toto môže spôsobiť zablokovanie, ak iná prebiehajúca transakcia aktualizovala nejaké riadky v týchto tabuľkách. Zablokovanie potrvá až kým nebude prebiehajúca transakcia ukončená.

Výhodou akcie DBS_UPDATE pri práci s tabuľkou je možnosť vynechať jej otvorenie a zatvorenie (jednoduchší zápis).

Pre D2000 verziu 5: Nevýhoda akcie DBS_UPDATE je v rýchlosti. Každé volanie akcie DBS_UPDATE má za následok, v rámci jej obsluhy v procese D2000 DBManager, nutnosť databázu otvoriť a následne zatvoriť, čo môže byť časovo náročná činnosť a predstavuje z databázového hľadiska pomerne neštandardný postup. Nutnosť otvárania a zatvárania databázy je možné potlačiť v rámci transakčného spracovania tak, že za príkaz uvedieme parameter TRANS.
Pre D2000 verziu 6 a vyššie: Optimalizácia procesu D2000 DBManager (recyklovanie spojení, predpripravené spojenia) spôsobila, že akcia DBS_UPDATE sa vykoná rovnako rýchlo ako akcia DB_UPDATE a navyše sa ušetrí čas potrebný na spracovanie explicitného príkazu na otvorenie databázy DB_CONNECT.

Potreba otvorenia a zatvorenia databázy sa môže eliminovať v rámci transakčného spracovania tak, že za príkazom nasleduje parameter TRANS.



Info
titleSúvisiace stránky:

Akcie v skriptoch