Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Akcia DB_INSUPD a DBS_INSUPD
Funkcia
Akcia je spojením akcií DB_INSERT a DB_UPDATE (resp. DBS_INSERT a DBS_UPDATE). Pracuje s jediným riadkom alebo viacerými riadkami. Ak sa nepodarí vloženie riadku (z akéhokoľvek dôvodu), predpokladá sa, že vloženie zlyhalo kvôli referenčnej integrite (unikátny kľúč v databáze) a pokúsi sa aktualizovať existujúci riadok. Aktualizujú sa stĺpce, ktoré nie sú súčasťou kľúča, kľúčový stĺpec/stĺpce sa zachovajú. Akcia úspešne skončí iba, ak sa podarilo vloženie riadku alebo aktualizácia všetkých riadkov.
Pozn: Hodnoty všetkých kľúčových položiek v
rowIdent
musia byť platné, inak sa vkladanie/modifikovanie neuskutoční, skončí s chybou a %GetLastExtErrorCode() vráti chybu 667. Deklarácia
Blok kódu | ||||
---|---|---|---|---|
| ||||
DB_INSUPD handleIdent_Int, rowIdent, retCodeIdent_Int [ORAHINT hintIdent_Str] |
Blok kódu | ||||
---|---|---|---|---|
| ||||
DBS_INSUPD dbObjIdent, rowIdent, retCodeIdent_Int [TRANS transHandle_Int] [ORAHINT hintIdent_Str] |
alebo
Blok kódu | ||||
---|---|---|---|---|
| ||||
DB_INSUPD handleIdent_Int, structIdent, retCodeIdent_Int [ORAHINT hintIdent_Str] DBS_INSUPD dbObjIdent, structIdent, retCodeIdent_Int [TRANS transHandle_Int] [ORAHINT hintIdent_Str] |
Parametre
handleIdent_Int | in | Identifikátor typu Int - (handle) spojenia s tabuľkou (DB_CONNECT). |
dbObjIdent | in | Odkaz na objekt typu Tabuľka. |
rowIdent | in | Identifikátor jedného riadku štruktúry (vkladaný/menený riadok). |
structIdent | in | Identifikátor celej štruktúry (vkladané/menené riadky). |
retCodeIdent_Int | out | Identifikátor návratového kódu. |
transHandle_Int | in | Identifikátor Pripojenia na databázu. |
hintIdent_Str | in | Vý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.
Od verzie D2000 7.01.010 vracia DBS_INSUPD chybu aj vtedy, keď počet aktualizovaných riadkov, prostredníctvom akéhokoľvek riadku štruktúry, je 0.
Od verzie D2000 7.01.010 vracia DBS_INSUPD chybu aj vtedy, keď počet aktualizovaných riadkov, prostredníctvom akéhokoľvek riadku štruktúry, je 0.
Popis
Tabuľka musí byť otvorená s prístupom _DB_MODIFY. Vkladaný riadok alebo štruktúra musí mať korektný typ štruktúry. Všetky položky každého vkladaného riadku musia mať platné hodnoty. Tabuľka musí mať zadefinovaný kľúč.
Výhodou akcie DBS_INSUPD pri práci s tabuľkou je možnosť vynechať jej otvorenie a zatvorenie (jednoduchší zápis). Optimalizácia procesu D2000 DBManager (recyklovanie spojení, predpripravené spojenia) spôsobila, že akcia DBS_INSUPD sa vykoná rovnako rýchlo ako akcia DB_INSUPD a navyše sa ušetrí čas potrebný na spracovanie explicitného príkazu na otvorenie databázy DB_CONNECT.
Výhodou akcie DBS_INSUPD pri práci s tabuľkou je možnosť vynechať jej otvorenie a zatvorenie (jednoduchší zápis). Optimalizácia procesu D2000 DBManager (recyklovanie spojení, predpripravené spojenia) spôsobila, že akcia DBS_INSUPD sa vykoná rovnako rýchlo ako akcia DB_INSUPD a navyše sa ušetrí čas potrebný na spracovanie explicitného príkazu na otvorenie databázy DB_CONNECT.
Súvisiace odkazy