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_Int in Identifikátor typu Int (handle) spojenia s tabuľkou (DB_CONNECT).
dbObjIdent in Odkaz na objekt typu Tabuľka.
retCodeIdent_Int out Identifikátor návratového kódu.
rowIdent in Identifikátor jedného riadku štruktúry.
strExpression_Str in Vý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, ...
in Zoznam objektov, konštánt alebo lokálnych premenných, ktoré sa použijú na mieste parametrov parametrizovaného výrazu strExpression_Str.
structRowIdent in Odkaz 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_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.
Popis
Tabuľka musí byť otvorená s prístupom _DB_MODIFY.

V prvom prípade je rušený riadok určený hodnotou kľúčového políčka v hodnote typu Štruktúra (rowIdent). Podľa neho sa v tabuľke nájde príslušný riadok a zruší sa.

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.
Príklad
Súvisiace odkazy