- Created by D2000 Dev Team, last modified on Oct 05, 2023
Akcia DB_DELETE a DBS_DELETE
Deklarácia
DB_DELETE handleIdent_Int, rowIdent,retCodeIdent_Int [ORAHINT hintIdent_Str] DBS_DELETE dbObjIdent, rowIdent, retCodeIdent_Int [TRANS transHandle_Int] [ORAHINT hintIdent_Str]
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. |
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.
DB_DELETE WHERE
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:
Add Comment