SQL_SELECT dbObjIdent, retCodeIdent_Int, [maxRowsIdent_Int], selectIdent_String [TRANS transHandle_Int] BIND ... |
SQL_SELECT connectString, retCodeIdent_Int, [maxRowsIdent_Int], selectIdent_String ON dbManIdent BIND ... |
BIND _locVar1, _locVar2, ...
BIND _locVarRowIdent
BIND _locVarRecordIdent
| dbObjIdent | in | Odkaz na objekt typu Databáza alebo Tabuľka. |
| connectString | in | Identifikátor typu Text, alebo textová konštanta obsahujúca konektovací string na databázu. |
| retCodeIdent_Int | out | Identifikátor typu Int- návratový kód. |
| maxRowsIdent_Int | in | Identifikátor typu Int - počet naraz načítaných riadkov (ak nie je uvedený, náhradná hodnota je 1). |
| selectIdent_String | in | Identifikátor typu String. |
| _locVar1, _locVar2, ... | in | Zoznam lokálnych premenných. |
| _locVarRowIdent | in | Odkaz na riadok lokálnej premennej typu Record. |
| _locVarRecordIdent | in | Identifikátor lokálnej premennej typu Record. |
Databázu, v rámci ktorej sa SQL príkaz SELECT vykoná je možné určiť:
Vlastný príkaz SELECT je definovaný hodnotou parametra selectIdent_String. Podľa počtu stĺpcov príkazu SELECT je potrebné vybrať vhodnú variantu zverejnenia jeho výsledkov prostredníctvom povinného kľúčového slova BIND. Význam a interpretácia jednotlivých variant je popísaný v rámci akcie SQL_PREPARE.
Nepovinný identifikátor maxRowsIdent_Int definuje počet riadkov výberu, ktorý bude zverejnený. Ak nie je uvedený, jeho hodnota je 1. Počet riadkov, ktorý je možné prečítať, závisí aj od použitého variantu BIND. Príslušný popis obsahuje akcia SQL_FETCH.
Maximálny počet vrátených riadkov je obmedzený konfiguračným parametrom databázy Maximum vrátených riadkov. Pri prekročení tohoto počtu riadkov bude do lokálnej štruktúry _locVarRecordIdent načítaných prvých Maximum vrátených riadkov a v retCodeIdent_Int sa vráti chyba _ERR_DATABASE_ROWS_LIMIT.
Poznámka
Hodnoty, ktoré vracia SQL príkaz, sú vložené do lokálnych premenných podľa poradia (1. hodnota do 1. bindovanej premennej, 2. do druhej atď). Toto platí aj pri vkladaní do lokálnej štruktúrovanej premennej (t.j. nepozerá sa na názvy stĺpcov). Potenciálne nebezpečné sú SELECT-y typu "SELECT *" - pokiaľ sa poradie stĺpcov v databáze líši od poradia stĺpcov v štruktúrovanej premennej.
Ak sú načítavané dáta z jedinej tabuľky alebo pohľadu, namiesto SQL_SELECT použite akciu DBS_READ.
PROCEDURE Demo1
INT _retCod
INT _maxId
; výber prostredníctvom objektu typu databáza
SQL_SELECT gnat_test, _retCode,, "select max(id) from OBJLIST" BIND _maxId
IF _retCode = _ERR_NO_ERROR THEN
; premenná _maxId je naplnená
ELSE
; chyba
ENDIF
; výber prostredníctvom objektu typu tabuľka
SQL_SELECT DB.OBJLIST, _retCode,, "select max(id) from OBJLIST" BIND _maxId
IF _retCode = _ERR_NO_ERROR THEN
; premenná _maxId je naplnená
ELSE
; chyba
ENDIF
INT _transHandle
; vytvorenie transakcie prostredníctvom objektu typu databáza
DB_TRANS_OPEN gnat_test, _transHandle, _retCode
IF _retCode = _ERR_NO_ERROR THEN
; transakcia otvorená
; výber v rámci transakcie
SQL_SELECT DB.OBJLIST, _retCode,, "select max(id) from OBJLIST" TRANS _transHandle BIND _maxId
IF _retCode = _ERR_NO_ERROR THEN
; premenná _maxId je naplnená
ELSE
; chyba
ENDIF
DB_TRANS_CLOSE _transHandle
ELSE
; chyba
ENDIF
; výber s pripojením
SQL_SELECT "connection String", _retCode,, "select max(id) from OBJLIST" ON SELF.DBM BIND _maxId
IF _retCode = _ERR_NO_ERROR THEN
; premenná _maxId je naplnená
ELSE
; chyba
ENDIF
END Demo1
PROCEDURE Demo2(INT _maxId)
INT _retCode
_maxId := %SetInvalid(0)
; výber prostredníctvom objektu typu databáza
SQL_SELECT gnat_test, _retCode,, "select max(id) from OBJLIST" BIND _maxId
IF _retCode = _ERR_NO_ERROR THEN
; premenná _maxId je naplnená
ELSE
; chyba
ENDIF
END Demo2
PROCEDURE Demo3(INT _maxId)
INT _retCode
INT _handle
_maxId := %SetInvalid(0)
;
SQL_CONNECT gnat_test, _handle, _retCode
IF _retCode <> _ERR_NO_ERROR THEN
RETURN ; chyba
ENDIF
SQL_PREPARE _handle, _retCode, "select max(id) from OBJLIST" BIND _maxId
IF _retCode <> _ERR_NO_ERROR THEN
RETURN ; chyba
ENDIF
SQL_FETCH _handle, _retCode
IF _retCode <> _ERR_NO_ERROR THEN
RETURN ; chyba
ENDIF
SQL_DISCONNECT _handle
END Demo3
BEGIN
CALL Demo1
INT _max
CALL Demo2(_max)
CALL Demo3(_max)
END |