DB_DELETE

DB_DELETE

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 (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:

Akcie v skriptoch