- Created by D2000 Dev Team on Oct 12, 2017
Akcia SQL_BINDIN
Funkcia
Akcia špecifikuje hodnoty parametrov a vykoná SQL príkaz SELECT pripravený akciou
SQL_PREPARE, pokiaľ v tejto akcii bola použitá parametrizácia
a kľúčové slovo BINDOUT.
Deklarácia
SQL_BINDIN handleIdent_Int, retCodeIdent_Int, _Par1, _Par2, ... SQL_BINDIN handleIdent_Int, retCodeIdent_Int, _VarRowIdent
Parametre
handleIdent_Int | in | Identifikátor typu Int - jednoznačné číslo (handle) spojenia s databázou. |
retCodeIdent_Int | out | Identifikátor typu Int - návratový kód. |
_Par1, _Par2, ... | in | Zoznam objektov, konštánt alebo lokálnych premenných, ktoré sa použijú na mieste parametrov parametrizovaného SQL príkazu SELECT. |
_VarRowIdent | 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 príkazu SELECT. |
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
Čítanie databázy SQL príkazom SELECT je implementované v dvoch alebo troch fázach.
Prvú (prípravnú) fázu vykoná akcia SQL_PREPARE. Nad databázou pripraví (a pokiaľ nie je použité kľúčové slovo BINDOUT, aj vykoná) príkaz SELECT.
Ak bolo použité kľúčové slovo BINDOUT znamenajúce, že SQL príkaz bol parametrizovaný, je potrebná druhá fáza - volaním akcie SQL_BINDIN je nutné nastaviť hodnoty vstupných parametrov a následne výraz vykonať.
Posledná fáza je postupné čítanie riadkov, ktoré pripravil príkaz SELECT akciou SQL_FETCH.
Poznámka: Použitím parametrizácie je možné uľahčiť prácu SQL databáze, pretože príprava (kompilácia) parametrizovaného SQL výrazu sa vykoná iba raz (v rámci akcie SQL_PREPARE). Následne je nutné nastaviť parametre akciou SQL_BINDIN (ktorá SQL príkaz aj vykoná) a jeden alebo viackrát volať SQL_FETCH na získanie výsledkov. Potom je možné nastaviť nové hodnoty parametrov a znovu vykonať SQL príkaz opätovným volaním SQL_BINDIN a získať nové výsledky volaním SQL_FETCH.
Vhodným nastavením parametrov databázy (napr. Oracle: session_cached_cursors) je možné zabezpečiť recyklovanie kurzorov (skompilovaných príkazov) medzi volaniami SQL_PREPARE.
Prvú (prípravnú) fázu vykoná akcia SQL_PREPARE. Nad databázou pripraví (a pokiaľ nie je použité kľúčové slovo BINDOUT, aj vykoná) príkaz SELECT.
Ak bolo použité kľúčové slovo BINDOUT znamenajúce, že SQL príkaz bol parametrizovaný, je potrebná druhá fáza - volaním akcie SQL_BINDIN je nutné nastaviť hodnoty vstupných parametrov a následne výraz vykonať.
Posledná fáza je postupné čítanie riadkov, ktoré pripravil príkaz SELECT akciou SQL_FETCH.
Poznámka: Použitím parametrizácie je možné uľahčiť prácu SQL databáze, pretože príprava (kompilácia) parametrizovaného SQL výrazu sa vykoná iba raz (v rámci akcie SQL_PREPARE). Následne je nutné nastaviť parametre akciou SQL_BINDIN (ktorá SQL príkaz aj vykoná) a jeden alebo viackrát volať SQL_FETCH na získanie výsledkov. Potom je možné nastaviť nové hodnoty parametrov a znovu vykonať SQL príkaz opätovným volaním SQL_BINDIN a získať nové výsledky volaním SQL_FETCH.
Vhodným nastavením parametrov databázy (napr. Oracle: session_cached_cursors) je možné zabezpečiť recyklovanie kurzorov (skompilovaných príkazov) medzi volaniami SQL_PREPARE.
Príklad
Príklad práce s databázou (akcie SQL_ ...).
INT _handle ; handle to database INT _retCode ; return code TEXT _name ; product name TEXT _type ; product type ; parametrized SQL command TEXT _sql = "SELECT Name, Type FROM Products WHERE ID>= #PAR# AND ID<= #PAR#" SQL_CONNECT MyDatabase, _handle, _retCode SQL_PREPARE _handle, _retCode, _sql BINDOUT _name, _type SQL_BINDIN _handle, _retCode, 1, 100 ; read all products between 1 and 100 DO_LOOP SQL_FETCH _handle, _retCode EXIT_LOOP _retCode # _ERR_NO_ERROR ; data processing goes here END_LOOP SQL_FREE _handle SQL_DISCONNECT _handle
Súvisiace odkazy
Súvisiace stránky:
Add Comment