Akcia DB_DELETE a DBS_DELETE


Funkcia
Zrušenie jedného alebo viacerých riadkov z tabuľky.

Deklarácia

 DB_DELETE handleIdent_Int, rowIdent,retCodeIdent_Int [ORAHINT hintIdent_Str] 

 DBS_DELETE dbObjIdent, rowIdent, retCodeIdent_Int [TRANS transHandle_Int] [ORAHINT hintIdent_Str] 
 
alebo
 
 DB_DELETE handleIdent_Int, retCodeIdent_Int WHERE strExpression_Str [BINDIN varIdent1, varIdent2, ... ] [ORAHINT hintIdent_Str] 

 DB_DELETE handleIdent_Int, retCodeIdent_Int WHERE strExpression_Str [BINDIN structRowIdent] [ORAHINT hintIdent_Str] 

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

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

Parametre

handleIdent_IntinIdentifikátor typu Int (handle) spojenia s tabuľkou (DB_CONNECT).
dbObjIdentinOdkaz na objekt typu Tabuľka.
retCodeIdent_IntoutIdentifikátor návratového kódu.
rowIdentinIdentifikátor jedného riadku štruktúry.
strExpression_StrinVýraz typu String, ktorý identifikuje rušené riadky. Pokiaľ je výraz parametrizovaný, musí byť uvedené aj kľúčové slovo BINDIN nasledované hodnotami parametrov (structRowIdent alebo varIdent1, varIdent2, ...).
varIdent1,
varIdent2, ...
inZoznam objektov, konštánt alebo lokálnych premenných, ktoré sa použijú na mieste parametrov parametrizovaného výrazu strExpression_Str.
structRowIdentinOdkaz na riadok lokálnej premennej typu Record alebo na riadok štruktúrovanej premennej. Hodnoty z tohto riadku sa použijú na mieste parametrov parametrizovaného SQL výrazu strExpression_Str.
transHandle_Int

in

Identifiká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

Tabuľka musí byť otvorená s prístupom _DB_MODIFY.

V prvom prípade (verzie s parametrom rowIdent ) je rušený riadok určený hodnotou kľúčových položiek v parametre typu Štruktúra (rowIdent). Podľa nich sa v tabuľke nájde príslušný riadok a zruší sa. Hodnoty všetkých kľúčových položiek v rowIdent musia byť platné, inak sa mazanie neuskutoční, skončí s chybou a %GetLastExtErrorCode() vráti chybu 667.


V druhom prípade je podmienkou pre rušenie výraz typu String (strExpression_Str), ktorého výsledná hodnota je použitá ako klauzula WHERE pre SQL príkaz DELETE. V tomto prípade je hodnota kľúčovej položky v štruktúre nepoužitá a nemusí byť nastavená. Ak je v tabuľke viacej riadkov ktoré vyhovujú podmienke (strExpression_Str), budú zrušené všetky.

Výhodou akcie DBS_DELETE 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_DELETE je v rýchlosti. Každé volanie akcie DBS_DELETE 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_DELETE sa vykoná rovnako rýchlo ako akcia DB_DELETE a navyše sa ušetrí čas potrebný na spracovanie explicitného príkazu na otvorenie databázy DB_DELETE.


Upozornenie
Variant príkazu
DB_DELETE WHERE
umožňuje zrušiť celý obsah tabuľky.

Ak je podmienka (strExpression_Str) splnená pre všetky riadky tabuľky (napríklad "1=1"), bude zmazaný jej celý obsah.

Súvisiace stránky:

Write a comment...