PRÍKAZY SQL – Visual FoxPro

Document Sample
PRÍKAZY SQL – Visual FoxPro Powered By Docstoc
					                      PRÍKAZY SQL – Visual FoxPro
AERROR() - Vytvorí pole pamäťových premenných, ktoré obsahujú informácie o poslednej chybe programu
Visual FoxPro, mechanizmu OLE, alebo ODBC
ALTER TABLE – SQL - Mení štruktúru tabuľky z programu.
CREATE CURSOR – SQL - Vytvorí dočasnú tabuľku.
CREATE TABLE – SQL - Vytvorí tabuľku obsahujúcu určené polia.
DELETE – SQL - Označí záznamy k odstráneniu.
INSERT – SQL - Pripojí na koniec tabuľky záznam obsahujúci v poliach určené hodnoty.
SELECT – SQL – Načíta dáta z jednej alebo viacerých tabuliek.
UPDATE – SQL - Aktualizuje záznamy v tabuľke novými hodnotami.
SQLCANCEL() - Vyžiada si zrušenie vykonávaného príkazu SQL.
SQLCOLUMNS() - Uloží zoznam názvov stĺpcov a informácie o každom z nich pre určenú tabuľku zdroja dát
do kurzorovej tabuľky programu Visual FoxPro.
SQLCOMMIT() - Potvrdí transakciu.
SQLCONNECT() - Zriadi spojenie so zdrojom dát.
SQLDISCONNECT() - Ukončí spojenie so zdrojom dát.
SQLEXEC() - Pošle príkaz SQL ku zdroju dát, kde je spracovaný.
SQLGETPROP() - Vráti aktuálne alebo východzie nastavenie pre aktívne spojenie.
SQLMORERESULTS() - Ak je k dispozícii niekoľko výsledných sád, skopíruje do pomocnej tabuľky programu
Visual FOXPRO ďalšiu výslednú sadu.
SQLROLLBACK() - Zruší všetky zmeny vykonané počas aktuálnej transakcie.
SQLSETPROP() - Určuje nastavenie aktívneho spojenia.
SQLSTRINGCONNECT() - Vytvorí spojenie so zdrojom dát.
SQLTABLES() - Uloží názvy tabuliek v zdroji dát do kurzorovej tabuľky programu Visual FOXPRO.




AERROR()

Vytvorí pole pamäťových premenných, ktoré obsahujú informácie o poslednej chybe programu Visual FoxPro,
mechanizmu OLE, alebo ODBC

Syntax

AERROR(NázovPoľa)

Argumenty

NázovPoľa

Určuje názov poľa vytvoreného funkciou AERROR( ).

Vracia typy

Numeric

Poznámky

Funkcia AERROR( ) vytvorí pole o šiestich stĺpcoch a vráti počet riadkov v poli. Z tohoto počtu riadkov je
možné určiť, ktorý typ chyby sa vyskytol.
V nasledujúcej tabuľke je popísaný obsah každého prvku vytvoreného poľa, ak sa chyba vyskytla v programe
Visual FoxPro. V takomto prípade obsahuje pole jeden riadok.

Číslo prvku    Popis
1    Hodnota typu Numeric. Obsahuje číslo chyby. Je zhodná s hodnotou, ktorú vracia funkcia ERROR( ).
2    Hodnota typu Character. Obsahuje text chybového hlásenia. Je zhodná s hodnotou, ktorú vracia funkcia
MESSAGE( ).
3    Hodnota null. Ak má však chyba dodatočný parameter, obsahuje text parametra chyby. Je zhodná s
hodnotou, ktorú vracia funkcia SYS(2018).
4    Hodnota null. V niektorých prípadoch obsahuje číslo pracovnej oblasti, v ktorej sa chyba vyskytla.
5    Hodnota null. Ak však zlyhala spúšť (chyba 539), obsahuje jednu z týchto číselných hodnôt:
     1 - Zlyhala spúšť na vkladanie.
     2 - Zlyhala spúšť na aktualizáciu.
     3 - Zlyhala spúšť na odstránenie.
6     Hodnota null.
7     Hodnota null.
V nasledujúcej tabuľke je popísaný obsah každého prvku vytvoreného poľa, ak sa vyskytla chyba mechanizmu
OLE (chyba 1427 alebo 1429). V takom prípade obsahuje pole jeden riadok.
Číslo prvku   Popis
1      Hodnota typu Numeric. Obsahuje číslo 1427 alebo 1429.
2      Hodnota typu Character. Obsahuje text chybového hlásenie programu Visual FoxPro.
3      Hodnota typu Character. Obsahuje text chybového hlásenie chyby mechanizmu OLE.
4      Hodnota typu Character. Obsahuje názov aplikácie (napríklad Microsoft Excel).
5      Hodnota null alebo hodnota typu Character. V prípade, že je informácia o chybe dostupná z aplikácie,
obsahuje názov súboru pomoci aplikácie. V opačnom prípade obsahuje hodnotu null.
6      Hodnota null, alebo hodnota typu Character. V prípade, že informácia o chybe je dostupná z aplikácie,
obsahuje kontextový identifikačný kód pomoci. V opačnom prípade obsahuje hodnotu null.
7      Hodnota typu Numeric. Obsahuje číslo výnimky mechanizmu OLE 2.0.
V nasledujúcej tabuľke je popísaný obsah každého prvku vytvoreného poľa, ak sa vyskytla chyba mechanizmu
ODBC. V takom prípade obsahuje pole jeden riadok.

Číslo prvku    Popis
1      Hodnota typu Numeric. Obsahuje vzdialené číslo chyby.
2      Hodnota typu Character. Obsahuje text vzdialeného chybového hlásenia.
3      Hodnota typu Numeric. V prípade, že zlyhalo volanie SQL, obsahuje číslo manipulátora spojenia.
4      Hodnota null.
5      Hodnota null.
6      Hodnota null.
7      Hodnota null.
V nasledujúcej tabuľke je popísaný obsah každého prvku vytvoreného poľa, ak sa vyskytla chyba 1526. Ak sa
objaví číslo chyby 1526 (chyba pri pripojení mechanizmu ODBC), obsahuje pole dva, alebo viac riadkov, pre
každú chybu ODBC jeden.

Číslo   prvku   Popis
1        Hodnota typu Numeric. Obsahuje číslo 1526.
2        Hodnota typu Character. Obsahuje text chybového hlásenia.
3        Hodnota typu Character. Obsahuje text chybového hlásenia chyby mechanizmu ODBC.
4        Hodnota typu Character. Obsahuje aktuálny SQL stav mechanizmu ODBC.
5        Hodnota typu Numeric. Obsahuje číslo chyby zo zdroja dát ODBC.
6        Hodnota typu Numeric. Obsahuje manipulátor spojenia ODBC.
7        Hodnota null.

Príklad

V nasledujúcom príklade je využitý príkaz ON ERROR na vytvorenie rutiny, ktorá ošetruje chybu s názvom
errhand. Chyba je vygenerovaná chybne zapísaným príkazom (BRWS). Rutina ošetrujúca chyby vytvorí
pomocou funkcie AERROR( ) pole obsahujúce informácie o chybe. Potom tieto informácie zobrazí.

ON ERROR DO errhand         && Názov procedúry ošetrujúcej chyby je errhand

BRWS && Chyba syntaxu
ON ERROR && Obnovenie systémového ošetrení chýb

PROCEDURE errhand
    = AERROR(aErrorArray) && Informácia o poslednej chybe
    CLEAR
    ? 'Informácia o chybe' && Zobrazenie správy
    FOR n = 1 TO 6 && Zobrazenie všetkých prvkov poľa
          ? aErrorArray(n)
    ENDFOR



ALTER TABLE - SQL
Mení štruktúru tabuľky z programu.

Syntax

ALTER TABLE NázovTabuľky1
      ADD | ALTER [COLUMN] NázovPoľa1
           TypPoľa [(nŠírkaPoľa [, nPresnosť])]
           [NULL | NOT NULL]
           [CHECK lVýraz1 [ERROR cTextSprávy1]]
           [DEFAULT eVýraz1]
           [PRIMARY KEY | UNIQUE]
           [REFERENCES NázovTabuľky2 [TAG NázovZložky1]]
           [NOCPTRANS]
 - alebo -
ALTER TABLE NázovTabuľky1
      ALTER [COLUMN] NázovPoľa2
           [NULL | NOT NULL]
           [SET DEFAULT eVýraz2]
           [SET CHECK lVýraz2 [ERROR cTextSprávy2]]
           [DROP DEFAULT]
           [DROP CHECK]
 - alebo -

ALTER TABLE NázovTabuľky1
     [DROP [COLUMN] NázovPoľa3]
     [SET CHECK lVýraz3 [ERROR cTextZprávy3]]
     [DROP CHECK]
     [ADD PRIMARY KEY eVýraz3 TAG NázovZložky2]
     [DROP PRIMARY KEY]
     [ADD UNIQUE eVýraz4 [TAG NázovZložky3]]
     [DROP UNIQUE TAG NázovZložky4]
     [ADD FOREIGN KEY [eVýraz5] TAG NázovZložky4
          REFERENCES NázovTabuľky2 [TAG NázovZložky5]]
     [DROP FOREIGN KEY TAG NázovZložky6 [SAVE]]
     [RENAME COLUMN NázovPoľa4 TO NázovPoľa5]
     [NOVALIDATE]

Argumenty

NázovTabuľky1

Určuje názov tabuľky, ktorej štruktúra sa upravuje.

ADD [COLUMN] NázovPoľa1

Určuje názov poľa, ktoré bude pridané.

ALTER [COLUMN] NázovPoľa1

Určuje názov existujúceho poľa, ktoré bude upravené.

TypPoľa [(nŠírkaPoľa [, nPresnosť]])

Určuje typ poľa, jeho šírku a presnosť (počet desatinných miest) pre nové, alebo upravené pole.
Argument TypPoľa obsahuje jedno písmeno ukazujúce dátový typ poľa. Niektoré dátové typy vyžadujú zadanie
argumentu nŠírkaPoľa, alebo nPresnosť, alebo oboch.
V nasledujúcej tabuľke je uvedený zoznam hodnôt argumentu TypPoľa a informácia, či pole tohoto typu
vyžaduje zadanie argumentov nŠírkaPoľa a nPresnosť.

TypPoľa nŠírkaPoľa nPresnosť      Popis
C             n          -        Pole typu Character o šírke n
D             -          -        Pole typu Date
T             -          -        Pole typu DateTime
N             n          d        Pole typu Numeric o šírke n, ktoré má d desatinných miest
F             n          d        Pole typu Numeric Floating o šírke n majúci d desatinných miest
I             -          -        Pole typu Integer
B             -          d        Pole typu Double
Y             -          -        Pole typu Currency
L             -          -        Pole typu Logical
M             -          -        Pole typu Memo
G             -          -        Pole typu General
Argumenty nŠírkaPoľa a nPresnosť sú pre pole typu D, T, L, Y, L, M, G ignorované. Ak nie je argument
nPresnosť zahrnutý pre pole typu N, F alebo B, je použitá jeho východzia hodnota 0 (žiadne desatinné miesto).

NULL

Povoľuje zadávať do príslušného poľa hodnoty null.

NOT NULL

Zabraňuje zadávať do príslušného poľa hodnoty null.
Ak budú vynechané argumenty NULL a NOT NULL, je prípustnosť hodnôt null v poli určená aktuálnym
nastavením hodnoty príkazom SET NULL. Ak sú však vynechané argumenty NULL a NOT NULL a je zahrnutá
jedna z klauzúl PRIMARY KEY alebo UNIQUE, je hodnota nastavená príkazom SET NULL ignorovaná a východzia
hodnota je nastavená na hodnotu NOT NULL.
CHECK lVýraz1

Určuje overovaciu podmienku pre pole. Ako argument lVýraz1 môže slúžiť užívateľom definovaná funkcia alebo
uložená procedúra, ktorej výsledkom je logický výraz. Pri pripojení prázdneho záznamu je overovaná platnosť
overovacieho pravidla. Ak nie je overovacie pravidlo splnené pre hodnoty prázdnych polí v pripojenom
zázname, vygeneruje sa chybová správa.

ERROR cTextSprávy1

Určuje chybové hlásenie, ktoré sa zobrazí pri chybnom vyhodnotení overovacej podmienky. Hlásenie sa zobrazí
len vtedy, ak sú dáta menené v okne Prechádzanie alebo v okne Úpravy.

DEFAULT eVýraz1

Určuje východziu hodnotu pre pole. Argument eVýraz1 musí mať rovnaký dátový typ ako príslušné pole.

PRIMARY KEY

Vytvára primárnu zložku indexu s rovnakým názvom ako príslušné pole.

UNIQUE

Vytvára kandidátnu zložku indexu rovnakého mena ako príslušné pole. Ďalšie informácie o kandidátnych
indexoch nájdete v kapitole 7, „Práca s tabuľkami", v Príručke vývojára.

Poznámka: Kandidátne indexy vytvorené zahrnutím voľby UNIQUE do príkazu ALTER TABLE alebo CREATE
TABLE (táto voľba zaisťuje kompatibilitu ANSI) nie sú rovnaké ako indexy vytvorené voľbou UNIQUE v príkaze
INDEX. Indexy vytvorené voľbou UNIQUE v príkaze INDEX povoľujú na rozdiel od kandidátnych indexov zadať
duplicitné indexové kľúče.

V poli použitom pre primárny alebo kandidátny index nie sú povolené hodnoty null a duplicitné hodnoty.
Pri vytváraní nového poľa príkazom ADD COLUMN je možné použiť pre primárny alebo kandidátny index aj také
pole, ktoré povoľuje hodnoty null. Chyba sa objaví až vo chvíli, keď sa pokúsite zadať do poľa použitého pre
primárny alebo kandidátny kľúč duplicitnú hodnotu.
Pri zmene existujúceho poľa kontroluje program Visual FoxPro obsah poľa len vtedy, ak je primárny alebo
kandidátny kľúč tvorený len jediným poľom. V tomto prípade je prehľadávaný obsah tohoto poľa, či neobsahuje
hodnoty null alebo duplicitné hodnoty. Ak nájde také hodnoty , je vygenerovaná chyba a tabuľka zostane
nezmenená.

REFERENCES NázovTabuľky2 TAG NázovZložky1

Určuje materskú tabuľku, ku ktorej sa zriaďuje perzistentná relácia. Klauzula TAG NázovZložky1 určuje
indexovú zložku materskej tabuľky, na ktorej základe sa vzťah vytvára. Názov zložky indexu môže obsahovať
najviac desať znakov.

NOCPTRANS

Zabraňuje prevodu polí typu Character a Memo do inej kódovej stránky. Ak je celá tabuľka prevádzaná do inej
kódovej stránky, zostanú polia s voľbou NOCPTRANS nepreložené. Klauzulu NOCPTRANS je možné zadať len
pre pole typu Character a Memo.
V nasledujúcom príklade sa vytvára tabuľka nazvaná MYTABLE, ktorá obsahuje dve polia typu Character a dve
polia typu Memo. Druhé pole typu Character CHAR2 a druhé pole typu Memo memo2 zahrnujú argument
NOCPTRANS, ktorý zabráni ich prevedeniu do inej kódovej stránky.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
    memo1 M, memo2 M NOCPTRANS)


ALTER [COLUMN] NázovPoľa2

Určuje názov existujúceho poľa, ktoré bude zmenené.

SET DEFAULT eVýraz2

Určuje novú východziu hodnotu pre existujúce pole. Argument eVýraz2 musí obsahovať rovnaký dátový typ
ako toto pole.

SET CHECK lVýraz2

Určuje nové overovacie pravidlo pre existujúce pole. Ako argument lVýraz2 môže slúžiť užívateľom definovaná
funkcia alebo uložená procedúra, ktorej výsledkom je logický výraz.
ERROR cTextSprávy2

Určuje chybové hlásenie, ktoré sa zobrazí pri chybnom vyhodnotení overovacieho pravidla pre pole. Hlásenie
sa zobrazí len vtedy, ak sú dáta menené v okne Prechádzanie alebo v okne Úpravy.

DROP DEFAULT

Odstraňuje východziu hodnotu pre existujúce pole.

DROP CHECK

Odstraňuje podmienku platnosti pre existujúce pole.

DROP [COLUMN] NázovPoľa3

Určuje pole, ktoré bude odstránené z tabuľky. Pri odstraňovaní poľa z tabuľky je odstránené tiež nastavenie
východzej hodnoty poľa a overovacie pravidlo pre toto pole.
Pri odstránení poľa z tabuľky stratia platnosť všetky výrazy (indexové kľúče a výrazy pre spúšť), ktoré na toto
pole odkazujú. Chyba sa však nevygeneruje pri odstraňovaní poľa, ale až neplatným indexovým kľúčom, alebo
výrazom pre spúšť pri behu programu.

SET CHECK lVýraz3

Určuje overovacie pravidlo pre tabuľku. Ako argument lVýraz3 môže slúžiť užívateľom definovaná funkcia alebo
uložená procedúra, ktorej výsledkom je logický výraz.

ERROR cTextZprávy3

Určuje chybové hlásenie, ktoré sa zobrazí pri chybnom vyhodnotení overovacieho pravidla pre tabuľku.
Hlásenie sa zobrazí len vtedy, ak sú dáta menené v okne Prechádzanie alebo v okne Úpravy.

DROP CHECK

Odstraňuje podmienku platnosti pre tabuľky.

ADD PRIMARY KEY eVýraz3 TAG NázovZložky2

Pridáva k tabuľke primárny index. Argument eVýraz3 určuje výraz pre primárny indexový kľúč a argument
NázovZložky2 určuje názov primárnej zložky indexu. Názvy zložiek indexu môžu obsahovať až 10 znakov. Ak
je vynechaná klauzula TAG NázovZložky2 a argument eVýraz3 je tvorený jediným poľom, bude primárna
zložka indexu pomenovaná podľa tohoto poľa.

DROP PRIMARY KEY

Odoberá primárny index a jeho zložku. Nie je treba zadávať názov primárneho kľúča, pretože tabuľka môže
mať len jeden primárny kľúč. Pri odobratí primárneho kľúča sa odstránia tiež všetky perzistentné vzťahy
vytvorené na jeho základe.

ADD UNIQUE eVýraz4 [TAG NázovZložky3]

Pridáva do tabuľky kandidátny index. Argument eVýraz4 určuje výraz pre kandidátny indexový kľúč a
argument NázovZložky3 určuje názov kandidátnej zložky indexu. Názvy zložiek indexu môžu obsahovať až 10
znakov. Ak je vynechaná klauzula TAG NázovZložky3 a argument eVýraz4 je tvorený jediným poľom, bude
kandidátna zložka indexu nazvaná podľa tohoto poľa.

DROP UNIQUE TAG NázovZložky4

Odoberá kandidátny index a jeho zložku. Názov kandidátnej zložky indexu je nutné zadať, pretože tabuľka
môže mať niekoľko kandidátnych kľúčov.

ADD FOREIGN KEY [eVýraz5] TAG NázovZložky4

Pridáva do tabuľky cudzí (nie primárny) index. Argument eVýraz5 určuje výraz pre cudzí indexový kľúč a
argument NázovZložky4 určuje názov zložky cudzieho indexu. Názvy zložiek indexu môžu obsahovať až 10
znakov.

REFERENCES NázovTabuľky2 [TAG NázovZložky5]

Určuje materskú tabuľku, ku ktorej je zriadené perzistentné spojenie. Pri zahrnutí klauzule TAG NázovZložky5
bude zriadené spojenie na základe zložky indexu existujúceho v materskej tabuľke. Názvy zložiek indexu môžu
obsahovať až 10 znakov. Ak bude klauzula TAG NázovZložky5 vynechaná, zriadi sa spojenie na základe
primárnej zložky indexu materskej tabuľky.
DROP FOREIGN KEY TAG NázovZložky6 [SAVE]

Odoberá cudzí kľúč so zložkou indexu NázovZložky6. Pri vynechaní klauzule SAVE bude zložka indexu
odstránená zo štrukturálneho indexu. Naopak pri zahrnutí klauzule SAVE nedôjde k odstráneniu zložky zo
štrukturálneho indexu.

RENAME COLUMN NázovPoľa4 TO NázovPoľa5

Umožňuje zmeniť názov poľa v tabuľke. Argument NázovPoľa4 určuje názov poľa, ktoré má byť zmenené,
argument NázovPoľa5 určuje nový názov tohoto poľa.

Varovanie: Buďte opatrní pri vykonávaní zmien názvov polí v tabuľke. Indexové výrazy, overovacie pravidlá
pre polia i pre tabuľky, príkazy, funkcie atď. môžu obsahovať odkazy na pôvodný názov poľa.

NOVALIDATE

Zaisťuje, aby program Visual FoxPro umožnil vykonanie takých zmien v štruktúre tabuľky, ktoré môžu porušiť
integritu dát v tabuľke. Vo východzom nastavení program Visual FoxPro zabraňuje, aby príkaz ALTER TABLE
vykonal zmeny v štruktúre tabuľky, ktoré môžu narušiť integritu dát v tabuľke. Zahrnutie voľby NOVALIDATE
toto východzie chovanie potlačí.

Poznámky

Príkaz ALTER TABLE je možné použiť i pri zmene štruktúry tabuľky, ktorá nebola pridaná do databázy. Ak však
budú pri zmenách voľnej tabuľky zahrnuté klauzule DEFAULT, FOREIGN KEY, PRIMARY KEY, REFERENCES alebo
SET, vygeneruje sa chyba.
Príkaz ALTER TABLE môže zostaviť znovu tabuľku tiež tým spôsobom, že vytvorí nové záhlavie tabuľky a pripojí
k nemu záznamy. Nutnosť znova zostaviť tabuľku môže byť spôsobená napríklad zmenou dátového typu poľa
alebo šírky poľa.
Akonáhle je tabuľka znovu zostavená, vykonajú sa overovacie pravidlá pre všetky polia, ktorých typ alebo šírka
boli zmenené. Ak zmeníte typ alebo šírku ľubovolného poľa v tabuľke, vykoná sa tiež overovacie pravidlo pre
tabuľky.

Ak upravujete overovacie pravidlo pre pole alebo pre tabuľku, ktorá už obsahuje záznamy, budú nové pravidlá
otestované s existujúcimi dátami. Pri prvom porušení niektorého overovacieho pravidla alebo spúšte sa objaví
varovanie.
Ak je upravovaná tabuľka súčasťou databázy, vyžaduje príkaz ALTER TABLE - SQL, aby bola táto databáza
otvorená pre výhradný prístup. Databázu je možné otvoriť pre výhradné použitie príkazom OPEN DATABASE s
klauzulou EXCLUSIVE.

V príklade 1 je do tabuľky customer pridané pole fax a sú preň povolené hodnoty null.
V príklade 2 je určené pole cust_id ako primárny kľúč tabuľky customer.
V príklade 3 je do poľa quantity v tabuľke orders pridané overovacie pravidlo pre pole, ktoré stanoví, že
hodnoty v tomto poli nesmú byť záporné.
V príklade 4 je zriadená perzistentná relácia 1:N medzi tabuľkami customer a orders na základe primárneho
kľúča cust_id tabuľky customer a do tabuľky orders je pridaný nový cudzí indexový kľúč cust_id.
V príklade 5 je odobraté overovacie pravidlo pre pole quantity v tabuľke orders.
V príklade 6 je odobratá perzistentná relácia medzi tabuľkami customer a orders, pritom je však zachovaná
indexová zložka cust_id v tabuľke orders.

* Príklad 1
SET PATH TO (HOME( ) + 'samples\data\') && Nastavenie cesty k tabuľke
ALTER TABLE customer ADD COLUMN fax c(20) NULL

* Príklad 2
ALTER TABLE customer ADD PRIMARY KEY cust_id TAG cust_id

ALTER TABLE customer ALTER COLUMN cust_id c(5) PRIMARY KEY

* Príklad 3
ALTER TABLE orders;
       ALTER COLUMN quantity SET CHECK quantity >= 0;
       ERROR "Nedá sa zadať záporná hodnota"

* Príklad 4
ALTER TABLE orders;
      ADD FOREIGN KEY cust_id TAG cust_id REFERENCES customer

* Príklad 5
ALTER TABLE orders ALTER COLUMN quantity DROP CHECK
* Príklad 6
ALTER TABLE orders DROP FOREIGN KEY TAG cust_id SAVE



CREATE CURSOR - SQL
Vytvorí dočasnú tabuľku.

Syntax

CREATE CURSOR názov_databázy
    (názov_poľa1 typ [(presnosť [, škála])
          [NULL | NOT NULL]
          [CHECK lVýraz [ERROR cTextSprávy]]
          [DEFAULT eVýraz]
          [UNIQUE]
          [NOCPTRANS]]
    [, názov_súboru2 ...]])
    | FROM ARRAY NázovPoľa

Argumenty

názov_databázy

Určuje názov vytváraného dočasného súboru. Ako argument názov_databázy je možné zadať menný výraz.

názov_poľa

Určuje názov poľa v dočasnej tabuľke. Ako každý argument názov_poľa je možné zadať menný výraz.

typ

Určuje jedno písmeno indikujúce dátový typ príslušného poľa.

presnosť

Určuje šírku poľa určeného argumentom názov_poľa. Zadanie argumentu presnosť vyžadujú niektoré dátové
typy.

škála

Určuje počet desatinných miest pre zadaný dátový typ. Zadanie argumentu škála vyžadujú niektoré dátové
typy.
V nasledujúcej tabuľke je uvedený zoznam hodnôt použiteľných v argumentoch typ, presnosť a škála:

TypPoľa / nŠírkaPoľa / nPresnosť / Popis
C       n        -         Pole typu Character o šírke n
D       -        -         Pole typu Date
T       -        -         Pole typu DateTime
N       n        d         Pole typu Numeric o šírke n majúci d desatinných miest
F       n        d         Pole typu Numeric Floating o šírke n majúci d desatinných miest
I       -        -         Pole typu Integer
B       -        d         Pole typu Double
Y       -        -         Pole typu Currency
L       -        -         Pole typu Logical
M       -        -         Pole typu Memo
G       -        -         Pole typu General
P       -        -         Pole typu Picture
Pre dátové typy D, T, Y, L, M, G a P sú hodnoty argumentov nŠírkaPoľa a nPresnosť ignorované. Ak nie je pre
dátové typy N, F alebo B zadaná hodnota argumentu nPresnosť, použije sa východzia hodnota nula (bez
desatinných miest).

NULL

Umožní v poli hodnoty null.

NOT NULL

Zabráni použitiu hodnôt null v poli.
Ak vynecháte klauzule NULL a NOT NULL, určuje prípustnosť hodnôt null v poli hodnota aktuálne nastavená
príkazom SET NULL. Ak vynecháte klauzule NULL a NOT NULL a zahrniete klauzulu PRIMARY KEY alebo
UNIQUE, je hodnota nastavená príkazom SET NULL ignorovaná a použitie hodnôt null bude neprípustné.
CHECK lVýraz

Určuje overovacie pravidlo pre pole. Ako argument lVýraz je možné použiť užívateľom definovanú funkciu.

ERROR cTextSprávy

Určuje chybovú správu, ktorá sa zobrazí pri chybe vygenerovanej pri nesplnení overovacieho pravidla. Správa
sa zobrazí len vtedy, ak boli dáta zmenené v okne Úpravy alebo v okne Prechádzanie.

DEFAULT eVýraz

Určuje východziu hodnotu pre pole. V argumente eVýraz musí byť použitý rovnaký dátový typ ako v príslušnom
poli.

UNIQUE

Vytvára pre pole kandidátny index. Zložka kandidátneho indexu má rovnaký názov ako príslušné pole. Ďalšie
informácie o kandidátnych indexoch nájdete pod heslom Použitie indexov a v kapitole 7, „Práca s tabuľkami", v
Príručke vývojára.

Poznámka: Kandidátne indexy (vytvorené zahrnutím klauzule UNIQUE) nie sú totožné s indexmi vytvorenými
príkazom INDEX s klauzulou UNIQUE. Index vytvorený príkazom INDEX s klauzulou UNIQUE umožňuje použiť
duplicitné indexové kľúče. Kandidátne indexy použitie duplicitných indexových kľúčov neumožňujú.

V poliach použitých pre kandidátne indexy nie sú povolené hodnoty null a duplicitné hodnoty. Ak však vytvoríte
kandidátny index pre pole, ktoré podporuje hodnoty null, chyba sa nevygeneruje. K tomu dôjde až vo chvíli,
keď sa pokúsite zadať do poľa použitého pre kandidátny index hodnotu null alebo duplicitnú hodnotu.

NOCPTRANS

Zabraňuje prevedeniu polí typu Character a polí typu Memo do inej kódovej stránky. Ak je kurzorová tabuľka
prevádzaná do inej kódovej stránky, nebudú polia, pre ktoré je zahrnutá klauzula NOCPTRANS, prevedené.
Klauzulu NOCPTRANS je možné zadať len pre pole typu Character a Memo.
Nasledujúci príklad vytvorí kurzorovú tabuľku s názvom MYCURSOR obsahujúcu dve polia typu Character a dve
polia typu Memo. Pre druhé pole typu Character (CHAR2) a druhé pole typu Memo (MEMO2) je zahrnutá
klauzula NOCPTRANS, ktorá zabráni ich prevedeniu do inej kódovej stránky.

CREATE CURSOR mycursor (char1 C(10), char2 C(10) NOCPTRANS,;
    memo1 M, memo2 M NOCPTRANS)


FROM ARRAY NázovPoľa

Určuje názov existujúceho indexovaného poľa, ktoré obsahuje názvy, typy a ďalšie informácie o jednotlivých
poliach dočasnej tabuľky. Správny formát jednotlivých prvkov tohoto poľa nájdete pod heslom AFIELDS( ).

Poznámky

Príkaz CREATE CURSOR vytvorí dočasnú tabuľku, ktorá bude existovať, kým nebude zatvorená. Je možné s ňou
manipulovať rovnako ako s ktoroukoľvek inou tabuľkou - je možné ňou prechádzať, indexovať ju, upravovať jej
záznamy a pripojiť nové.
Dočasná tabuľka bude otvorená v najnižšej dostupnej pracovnej oblasti a môže byť sprístupnená pomocou
svojho aliasu. Každé pole dočasnej tabuľky je definované svojim názvom, typom, presnosťou a škálou. Tieto
definície je možné získať z príkazu alebo z indexovaného poľa. Dočasná tabuľka je otvorená pre výhradné
použitie bez ohľadu na hodnotu nastavenú príkazom SET EXCLUSIVE.

Príklad

* Nasledujúci príklad vytvorí kurzorovú tabuľku s aliasom employee.

CLOSE DATABASES
CLEAR
CREATE CURSOR employee ;
     (Name C(20), Address C(30), City C(30), PostalCode C(10), ;
           Comments M)
? ALIAS( )
DISPLAY STRUCTURE



CREATE TABLE - SQL
Vytvorí tabuľku obsahujúcu určené polia.

Syntax

CREATE TABLE | DBF NázovTabuľky1 [NAME DlhýNázovTabuľky] [FREE]
     (NázovPoľa1 TypPoľa [(nŠírkaPoľa [, nPresnosť])]
           [NULL | NOT NULL]
           [CHECK lVýraz1 [ERROR cTextSprávy1]]
           [DEFAULT eVýraz1]
           [PRIMARY KEY | UNIQUE]
           [REFERENCES NázovTabuľky2 [TAG NázovZložky1]]
           [NOCPTRANS]
     [, NázovPoľa2 ...]
           [, PRIMARY KEY eVýraz2 TAG NázovZložky2
           |, UNIQUE eVýraz3 TAG NázovZložky3]
           [, FOREIGN KEY eVýraz4 TAG NázovZložky4 [NODUP]
                 REFERENCES NázovTabuľky3 [TAG NázovZložky5]]
           [, CHECK lVýraz2 [ERROR cTextSprávy2]])
| FROM ARRAY NázovIndexovanéhoPoľa

Argumenty

CREATE TABLE | DBF NázovTabuľky1

Určuje názov vytváranej tabuľky. Voľby TABLE a DBF sú identické.

NAME DlhýNázovTabuľky

Určuje dlhý názov tabuľky. Dlhý názov tabuľky je možné zadať len v prípade, že je otvorená databáza. Dlhé
názvy tabuliek sa totiž ukladajú v databázach.
Dlhé názvy môžu pozostávať až zo 128 znakov a môžu byť použité v databáze namiesto krátkych názvov
súborov.

FREE

Určuje, že tabuľka nemá byť pridaná do databázy. Kým nie je otvorená žiadna databáza, nie je treba zadávať
klauzulu FREE.

(NázovPoľa1 TypPoľa [(nŠírkaPoľa [, nPresnosť])]

Určuje názov poľa, dátový typ poľa, šírku poľa, prípadne presnosť poľa (tj. počet desatinných miest).
Argument TypPoľa je jedno písmeno indikujúce dátový typ poľa. Niektoré dátové typy vyžadujú zadanie
argumentu nŠírkaPoľa či nPresnosť, alebo oboch.
V nasledujúcej tabuľke sú uvedené jednotlivé hodnoty argumentu TypPoľa a informácie o tom, či vyžadujú
určenie argumentov nŠírkaPoľa a nPresnosť.

TypPoľa / nŠírkaPoľa / nPresnosť /           Popis
C       n        -         Pole typu Character o šírke n
D       -        -         Pole typu Date
T       -        -         Pole typu DateTime
N       n        d         Pole typu Numeric o šírke n majúci d desatinných miest
F       n        d         Pole typu Numeric Floating o šírke n majúci d desatinných miest
I       -        -         Pole typu Integer
B       -        d         Pole typu Double
Y       -        -         Pole typu Currency
L       -        -         Pole typu Logical
M       -        -         Pole typu Memo
G       -        -         Pole typu General
Pre dátové typy D, T, Y, L, M, G a P sú hodnoty argumentov nŠírkaPoľa a nPresnosť ignorované. Ak nie je pre
dátové typy N, F alebo B zadaná hodnota argumentu nPresnosť, použije sa východzia hodnota nula (bez
desatinných miest).

NULL

Umožní v poli hodnoty null.

NOT NULL

Zabráni použitiu hodnôt null v poli.
Ak vynecháte klauzule NULL a NOT NULL, určuje prípustnosť hodnôt null v poli hodnota aktuálne nastavená
príkazom SET NULL. Ak vynecháte klauzule NULL a NOT NULL a zahrniete klauzulu PRIMARY KEY alebo
UNIQUE, je hodnota nastavená príkazom SET NULL ignorovaná a použitie hodnôt null bude neprípustné.
CHECK lVýraz1

Určuje overovacie pravidlo pre pole. Ako argument lVýraz je možné použiť užívateľom definovanú funkciu.
Uvedomte si, že overovacie pravidlo je kontrolované pri pripojení prázdneho záznamu do tabuľky. Ak
overovacie pravidlo nepovoľuje v poli prázdne hodnoty, vygeneruje sa pri pripojení prázdneho záznamu chyba.

ERROR cTextZprávy1

Určuje chybovú správu, ktorá sa zobrazí pri chybe vygenerovanej pri nesplnení overovacieho pravidla. Správa
sa zobrazí len vtedy, ak boli dáta zmenené v okne Úpravy alebo v okne Prechádzanie.

DEFAULT eVýraz1

Určuje východziu hodnotu pre pole. V argumente eVýraz musí byť použitý rovnaký dátový typ ako v príslušnom
poli.

PRIMARY KEY

Vytvára pre pole primárny index. Zložka primárneho indexu má rovnaký názov ako príslušné pole.

UNIQUE

Vytvára pre pole kandidátny index. Zložka kandidátneho indexu má rovnaký názov ako príslušné pole. Ďalšie
informácie o kandidátnych indexoch nájdete pod heslom Použitie indexov a v kapitole 7, „Práca s tabuľkami", v
Príručke vývojára.

Poznámka: Kandidátne indexy (vytvorené zahrnutím klauzule UNIQUE) nie sú totožné s indexmi vytvorenými
príkazom INDEX s klauzulou UNIQUE. Index vytvorený príkazom INDEX s klauzulou UNIQUE umožňuje použiť
duplicitné indexové kľúče. Kandidátne indexy použitie duplicitných indexových kľúčov neumožňujú. Ďalšie
informácie o voľbe UNIQUE nájdete pod heslom INDEX.

V poliach použitých pre primárne alebo kandidátne indexy nie sú povolené hodnoty null a duplicitné hodnoty.
Ak však vytvoríte primárny alebo kandidátny index pre pole, ktoré podporuje hodnoty null, chyba sa
nevygeneruje. K tomu dôjde až vo chvíli, keď sa pokúsite zadať do poľa použitého pre primárny alebo
kandidátny index hodnotu null alebo duplicitnú hodnotu.

REFERENCES NázovTabuľky2 [TAG NázovZložky1]

Určuje materskú tabuľku, ku ktorej je zriadená perzistentná relácia. Ak vynecháte klauzulu TAG NázovZložky1,
použije sa pri zriadení relácie primárny indexový kľúč materskej tabuľky. Ak materská tabuľka nemá primárny
kľúč, vygeneruje sa chyba.
Ak chcete zriadiť reláciu na základe existujúcej zložky indexu materskej tabuľky, zahrňte klauzulu TAG
NázovZložky1. Názvy zložiek indexov môžu pozostávať až z 10 znakov.
Ako materskú tabuľku nie je možné použiť voľnú tabuľku.

NOCPTRANS

Zabraňuje prevodu polí typu Character a polí typu Memo do inej kódovej stránky. Ak je tabuľka prevádzaná do
inej kódovej stránky, nebudú polia, pre ktoré je zahrnutá klauzula NOCPTRANS, prevedené. Klauzulu
NOCPTRANS je možné zadať len pre pole typu Character a Memo.
Nasledujúci príklad vytvorí tabuľku s názvom MYTABLE obsahujúcu dve polia typu Character a dve polia typu
Memo. Pre druhé pole typu Character (CHAR2) a druhé pole typu Memo (MEMO2) je zahrnutá klauzula
NOCPTRANS, ktorá zabráni ich prevedeniu do inej kódovej stránky.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
    memo1 M, memo2 M NOCPTRANS)


PRIMARY KEY eVýraz2 TAG NázovZložky2

Určuje vytváraný primárny index. Do argumentu eVýraz2 sa zadáva ľubovoľné pole alebo kombinácia polí
tabuľky. Klauzula TAG NázovZložky2 určuje názov vytváranej primárnej zložky indexu. Názvy zložiek indexov
môžu pozostávať až z 10 znakov.
Vzhľadom k tomu, že tabuľka môže obsahovať len jeden primárny index, nie je možné zahrnúť túto klauzulu v
prípade, že bol už vytvorený primárny index pre niektoré pole. Ak zahrniete v príkaze CREATE TABLE niekoľko
klauzúl PRIMARY KEY, vygeneruje sa chyba.

UNIQUE eVýraz3 TAG NázovZložky3

Vytvára kandidátny index. Argument eVýraz3 určuje ľubovoľné pole alebo kombináciu polí tabuľky. Ak však bol
vytvorený primárny index klauzulou PRIMARY KEY, nie je možné zahrnúť pole určené pre primárny index.
Klauzula TAG NázovZložky3 určuje názov vytváranej kandidátnej zložky indexu. Názvy zložiek indexov môžu
pozostávať až z 10 znakov.
Tabuľka môže mať niekoľko kandidátnych indexov.

FOREIGN KEY eVýraz4 TAG NázovZložky4 [NODUP]

Vytvára cudzí (nie primárny) index a zriaďuje reláciu k materskej tabuľke. Argument eVýraz4 určuje cudzí
indexový kľúč a argument NázovZložky4 určuje názov vytváranej cudzej zložky indexu. Názvy zložiek indexov
môžu pozostávať až z 10 znakov. Ak chcete vytvoriť kandidátny cudzí index, zahrňte klauzulu NODUP.
Pre tabuľky je možné vytvoriť niekoľko cudzích indexov, ale jednotlivé indexové výrazy musia určovať rôzne
polia v tabuľke.

REFERENCES NázovTabuľky3 [TAG NázovZložky5]

Určuje materskú tabuľku, ku ktorej sa zriaďuje perzistentná relácia. Ak chcete vytvoriť reláciu na základe
zložky indexu materskej tabuľky, zahrňte klauzulu TAG NázovZložky5. Názvy zložiek indexov môžu pozostávať
až z 10 znakov. Ak vynecháte klauzulu TAG NázovZložky5, zriadi sa vo východzom nastavení relácia
využívajúca primárny indexový kľúč materskej tabuľky.

CHECK eVýraz2 [ERROR cTextZprávy2]

Určuje overovacie pravidlo pre tabuľky. Klauzula ERROR cTextZprávy2 určuje chybovú správu, ktorá sa zobrazí
pri vykonávaní overovacieho pravidla pre tabuľky. Správa sa zobrazí len vtedy, ak boli dáta zmenené v okne
Úpravy alebo v okne Prechádzanie.

FROM ARRAY NázovIndexovanéhoPoľa

Určuje názov existujúceho indexovaného poľa, ktoré obsahuje názvy, typy a ďalšie informácie o jednotlivých
poliach tabuľky. Obsah takéhoto indexovaného poľa je možné definovať pomocou funkcie AFIELDS( ).

Poznámky

Nová tabuľka sa otvorí v najnižšej dostupnej pracovnej oblasti a môže byť sprístupnená pomocou svojho alias.
Nová tabuľka je otvorená pre výhradné použitie bez ohľadu na hodnotu nastavenú príkazom SET EXCLUSIVE.
Ak je otvorená niektorá databáza a nebola zahrnutá klauzula FREE, bude nová tabuľka pridaná do tejto
databázy. Pritom nie je možné vytvoriť tabuľky s rovnakým názvom, ktorý má už niektorá tabuľka v databáze.
Ak je databáza otvorená, vyžaduje príkaz CREATE TABLE - SQL, aby bola otvorená pre výhradný prístup.
Databázu je možné otvoriť pre výhradné použitie príkazom OPEN DATABASE s klauzulou EXCLUSIVE.
Ak nie je pri vytváraní novej tabuľky žiadna databáza otvorená, vygeneruje sa chyba pri zahrnutí klauzule
NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY alebo REFERENCES.

Pamätajte si, že v syntaxe príkazu CREATE TABLE sa k oddeleniu jednotlivých volieb používajú čiarky. Klauzuly
NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY a UNIQUE musia byť umiestnené v zátvorkách, ktoré
obsahujú definície stĺpcov.

Príklad:

*   Nasledujúci príklad vytvára novú databázu s názvom Mydata1. Pomocou príkazu CREATE TABLE sú vytvorené
*   dve tabuľky, Salesman a Customer, ktoré sú automaticky pridané do databázy. V druhom príkaze CREATE
*   TABLE je pomocou klauzule FOREIGN KEY a REFERENCE zriadená perzistentná relácia 1:N medzi oboma
*   tabuľkami. Príkazom MODIFY DATABASE je táto relácia medzi oboma tabuľkami zobrazená.

CREATE DATABASE mydata1
CREATE TABLE salesman (SalesID c(6) PRIMARY KEY, SaleName C(20))
CREATE TABLE customer (SalesID c(6), ;
    CustName c(20),      SalesBranch c(3), ;
    FOREIGN KEY SalesId TAG SalesId REFERENCE SALESMAN)
MODIFY DATABASE



DELETE - SQL
Označí záznamy k odstráneniu.

Syntax

DELETE FROM [NázovDatabázy!]NázovTabuľky
    [WHERE PodmienkyPreFilter1 [AND | OR PodmienkyPreFilter2 ...]]

Argumenty

FROM [NázovDatabázy!]NázovTabuľky
Určuje tabuľku, ktorej záznamy budú označené k odstráneniu.
Argument NázovDatabázy! určuje názov neaktuálnej databázy obsahujúcej tabuľku. Názov databázy
obsahujúcej požadovanú tabuľku je nutné zahrnúť v prípade, že táto databáza nie je aktuálna. Názov databázy
a názov tabuľky oddeľte výkričníkom (!).

WHERE PodmienkyPreFilter1 [AND | OR PodmienkyPreFilter2 ...]

Určuje záznamy, ktoré budú označené k odstráneniu.
Argument PodmienkyPreFilter určuje kritériá, ktoré musia spĺňať záznamy, ktoré majú byť označené k
odstráneniu. Môžete zadať ľubovolný počet podmienok pre filter spojených navzájom operátormi AND alebo
OR. Je možné použiť tiež operátor NOT, ktorý preklopí hodnotu logického výrazu, alebo funkciu EMPTY( ), ktorá
zistí prítomnosť prázdneho poľa.

Poznámky

Záznamy označené k odstráneniu nie sú z tabuľky fyzicky odstránené, kým nie je vykonaný príkaz PACK.
Označené záznamy je možné obnoviť príkazom RECALL.
Ak je príkazom SET DELETED nastavená hodnota ON, sú záznamy označené k odstráneniu ignorované
všetkými príkazmi, ktoré zahrňujú odbor.
Na rozdiel od príkazu DELETE sa pri označovaní niekoľkých záznamov k odstráneniu pomocou príkazu DELETE -
SQL v tabuľkách otvorených pre zdieľaný prístup používa zamykanie tabuliek. To znižuje možnosť výskytu
konfliktu vo viacužívateľskom prostredí, môže sa však znížiť aj výkon. Najvyššieho výkonu je možné dosiahnuť
pri otvorení tabuľky pre výhradný prístup alebo pri zamknutí tabuľky pomocou funkcie FLOCK( ).

Príklad:

* Nasledujúci príklad otvorí tabuľky customer v databáze testdata. Všetky záznamy, ktoré obsahujú v poli
* country reťazec USA, sú označené k odstráneniu pomocou príkazu DELETE - SQL. Všetky označené záznamy
* sú zobrazené. Nakoniec je označenie všetkých záznamov zrušené príkazom RECALL ALL.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Otvorenie tabuľky customer

DELETE FROM customer WHERE country = 'USA' && Označenie k odstráneniu
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Zoznam označených záznamov
RECALL ALL && Zrušenie označenia všetkých záznamov



INSERT - SQL
Pripojí na koniec tabuľky záznam obsahujúci v poliach určené hodnoty.

Syntax

INSERT INTO názov_databázy [(názov_súboru1 [, názov_súboru2, ...])]
      VALUES (eVýraz1 [, eVýraz2, ...])
 - alebo -
INSERT INTO názov_databázy FROM ARRAY NázovIndexovanéhoPoľa | FROM MEMVAR

Argumenty

INSERT INTO názov_databázy

Určuje názov tabuľky, do ktorej bude pripojený nový záznam. Argument názov_databázy môže zahŕňať popis
cesty. Môže to byť menný výraz.
Ak nie je zadaná tabuľka otvorená, bude otvorená pre výhradné použitie v novej pracovnej oblasti a do nej
bude pripojený nový záznam. Táto pracovná oblasť však nebude vybraná, vybraná zostane aktuálna pracovná
oblasť.
Ak je zadaná tabuľka otvorená, príkazom INSERT sa do nej pripojí nový záznam. Ak je určená tabuľka otvorená
v inej než aktuálnej pracovnej oblasti, nebude táto pracovná oblasť po pripojení záznamu vybraná, vybraná
zostane aktuálna pracovná oblasť.

[(názov_súboru1 [, názov_súboru2 [, ...]])]

Určuje názvy polí v novom zázname, do ktorého budú vložené hodnoty.

VALUES (eVýraz1 [, eVýraz2 [, ...]])
Určuje hodnoty, ktoré budú vložené do polí v novom zázname. Ak vynecháte názvy polí, musíte určiť hodnoty
pre polia v tom poradí, v ktorom sú polia definované v štruktúre tabuľky.

FROM ARRAY NázovIndexovanéhoPoľa

Určuje indexované pole, ktorého dáta budú vložené do nového záznamu. Obsah prvkov tohoto indexovaného
poľa bude vložený do zodpovedajúcich polí v zázname, počínajúc od prvého poľa. Obsah prvého prvku
indexovaného poľa sa vloží do prvého poľa v novom zázname, obsah druhého prvku indexovaného poľa sa
vloží do druhého poľa v novom zázname atď.

FROM MEMVAR

Určuje, že do jednotlivých polí bude vložený obsah pamäťových premenných s rovnakým názvom. Ak
pamäťová premenná pre niektoré pole neexistuje, zostane príslušné pole prázdne.

Poznámky

Nový záznam bude obsahovať dáta uvedené v klauzule VALUES alebo dáta obsiahnuté v určenom indexovanom
poli alebo v pamäťových premenných. Ukazovateľ záznamu bude umiestnený na novom zázname.

Príklad

* Nasledujúci príklad otvorí tabuľky customer v databáze testdata. Do pamäťových premenných je načítaný
* obsah aktuálneho záznamu a štruktúra tabuľky je skopírovaná do novej tabuľky nazvanej cust2. Príkazom
* INSERT - SQL je vložený nový záznam do tabuľky cust2 a potom je vyvolaný príkaz BROWSE, ktorým sa
nový * záznam zobrazí.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer   && Otvorenie tabuľky customer
SCATTER MEMVAR

COPY STRUCTURE TO cust2
INSERT INTO cust2 FROM MEMVAR
SELECT CUST2
BROWSE



SELECT - SQL
Načíta dáta z jednej alebo viacerých tabuliek.

Syntax

SELECT [ALL | DISTINCT]
        [Alias.] Vybraná_Položka [AS Názov_Stĺpca]
        [, [Alias.] Vybraná_Položka [AS Názov_Stĺpca] ...]
FROM [NázovDatabázy!]Tabuľka [Lokálny_Alias]
        [, [NázovDatabázy!]Tabuľka [Lokálny_Alias] ...]
[[INTO Ciel]
        | [TO FILE NázovSúboru [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]]
[PREFERENCE NázovPredvoľby]
[NOCONSOLE]
[PLAIN]
[NOWAIT]
[WHERE SpojovaciaPodmienka [AND SpojovaciaPodmienka ...]
        [AND | OR PodmienkaPreFilter [AND | OR PodmienkaPreFilter ...]]]
[GROUP BY StĺpecSkupiny [, StĺpecSkupiny ...]]
[HAVING PodmienkaPreFilter ]
[UNION [ALL] PríkazSELECT]
[ORDER BY Radiaca_položka [ASC | DESC] [, Radiaca_položka [ASC | DESC] ...]]

Argumenty

[ALL | DISTINCT]

[Alias.] Vybraná_Položka [AS Názov_Stĺpca]
          [, [Alias.] Vybraná_Položka [AS Názov_Stĺpca] ...]

Klauzula SELECT určuje polia, konštanty a výrazy, ktoré sa zobrazia vo výsledkoch dotazu.
Východzia klauzula ALL zobrazí vo výsledkoch dotazu všetky riadky.
Klauzula DISTINCT vyradí z výsledkov dotazu všetky duplicitné riadky.
Poznámka: Klauzulu DISTINCT môžete v príkaze SELECT použiť len raz.

Argument Alias. určuje zodpovedajúce názvy položiek. Každá položka, ktorú určíte klauzulou Vybraná_Položka,
vygeneruje jeden stĺpec výsledkov dotazu. Ak majú dve alebo viac položiek rovnaký názov, uveďte pred
názvom položky alias tabuľky a bodku, aby ste zabránili zdvojeniu stĺpcov.
Argument Vybraná_Položka určuje položku, ktorá bude uvedená vo výsledkoch dotazu. Táto položka môže byť:

·         názov poľa z tabuľky v klauzule FROM,
·         konštanta určujúca, že rovnaká konštantná hodnota sa objaví v každom riadku    výsledkov dotazu,
·         výraz, ktorým môže byť názov užívateľom definovanej funkcie.

Užívateľom definované funkcie s príkazom SELECT

Hoci použitie užívateľom definovaných funkcií v klauzulách príkazu SELECT má zjavné výhody, mali by ste tiež
zvážiť nasledujúce obmedzenia:

·       Rýchlosť operácií vykonávaných príkazom SELECT môže byť obmedzená rýchlosťou, ktorou sú
vykonávané užívateľom definované funkcie. Manipulácie s veľkými objemami dát zahrňujúce užívateľom
definované funkcie môžu byť lepšie zabezpečené použitím API, alebo užívateľom definovanými funkciami
napísanými v jazyku C alebo v assembleri.

·        V užívateľom definovaných funkciách vyvolaných z príkazu SELECT nepoznáte žiadne špecifikácie
týkajúce sa vstupu/výstupu (I/O) programu Visual FoxPro alebo prostredia tabuľky. Obecne vyjadrené,
neviete, ktorá pracovná oblasť je vybraná, nepoznáte názov aktuálnej tabuľky alebo názvy spracovávaných
polí. Hodnoty týchto premenných závisia na tom, kde presne v optimalizačnom procese je užívateľom
definovaná funkcia vyvolaná.
·        Nieje bezpečné meniť vstup/výstup (I/O) programu Visual FoxPro alebo prostredia tabuľky v
užívateľom definovaných funkciách vyvolaných z príkazu SELECT. Výsledky sú - obecne povedané -
nepredvídateľné.

·       Jediný spoľahlivý spôsob, ako predať hodnoty do užívateľom definovaných funkcií vyvolaných z príkazu
SELECT, je pomocou zoznamu parametra predaného funkcii v okamihu jej vyvolania.
·       V prípade, že budete experimentovať a objavíte spôsob manipulácie, ktorý v určitej verzii programu
FoxPro funguje, nie je zaručené, že bude fungovať aj v ďalších verziách.

Nezávisle na týchto obmedzeniach je v príkaze SELECT použitie užívateľom definovaných funkcií prípustné.
Nezabúdajte ale, že použitie príkazu SELECT môže spomaliť činnosť.
Ďalej uvedené funkcie poľa sú k dispozícii pre použitie s vybranou položkou, ktorou môže byť niektoré pole
alebo výraz zahŕňajúci pole:

·          Funkcia AVG(Vybraná_Položka), ktorá spočíta priemer zo stĺpca číselných dát.
·          Funkcia COUNT(Vybraná_Položka), ktorá spočíta počet vybraných položiek v stĺpci. Funkcia COUNT(*)
spočíta   počet riadkov vo výstupe dotazu.
·          Funkcia MIN(Vybraná_Položka), ktorá určí najmenšiu hodnotu argumentu Vybraná_Položka v stĺpci.
·          Funkcia MAX(Vybraná_Položka), ktorá určí najväčšiu hodnotu argumentu Vybraná_Položka v stĺpci.
·          Funkcia SUM(Vybraná_Položka), ktorá vykoná súčet stĺpca číselných dát.

Funkcie poľa nieje možné vnárať.

AS Názov_Stĺpca

Určuje záhlavie stĺpca vo výstupe dotazu. To je užitočné vtedy, ak je ako argument Vybraná_Položka použitý
výraz alebo ak obsahuje funkciu poľa a ak chcete dať stĺpcu zmysluplný názov. Ako argument Názov_Stĺpca je
možné použiť výraz, ten však nesmie obsahovať znaky (napríklad medzery), ktoré nie sú v názvoch polí
tabuľky povolené.

FROM [NázovDatabázy!]Tabuľka [Lokálny_Alias]
       [, [NázovDatabázy!]Tabuľka [Lokálny_Alias] ...]

Uvádza zoznam tabuliek obsahujúcich dáta, ktoré sú hľadané dotazom. Ak nie je otvorená žiadna tabuľka,
zobrazí sa dialógové okno Otvoriť, v ktorom môžete zadať umiestnenie súboru. Otvorená tabuľka zostáva
otvorená, kým nie je dotaz dokončený.
Argument NázovDatabázy! určuje názov inej než aktuálnej databázy obsahujúcej požadovanú tabuľku. Názov
databázy obsahujúcej tabuľku je nutné uviesť, ak to nie je databáza aktuálna. Za názvom databázy a pred
názvom tabuľky uveďte ako oddelovač výkričník (!).
Argument Lokálny_Alias určuje dočasný názov pre tabuľku uvedenú v argumente Tabuľka. Ak určíte lokálny
alias, musíte ho používať namiesto názvu tabuľky v celom príkaze SELECT. Lokálny alias nemá žiadny vplyv na
prostredie programu Visual FoxPro.

INTO Cieľ
Určuje, kam sa uložia výsledky dotazu. Ak uvediete v rovnakom dotaze klauzulu INTO a klauzulu TO, klauzula
TO je ignorovaná. Ak klauzulu INTO neuvediete, výsledky dotazu sa zobrazia v okne Prechádzanie. Klauzulu TO
môžete tiež použiť pri smerovaní výsledkov dotazu na tlačiareň alebo do súboru.
Ako argument Cieľ môže byť využitá jedna z nasledujúcich klauzúl:

·        Klauzula ARRAY NázovPoľa, ktorá uloží výsledky dotazu v poli pamäťových premenných. Toto pole sa
nevytvorí v prípade, že dotaz nevyberie žiadny záznam.
·        Klauzula CURSOR NázovKurzorovejTabuľky, ktorá uloží výsledky dotazu v kurzorovej tabuľke. Ak
uvediete názov otvorenej tabuľky, program Visual FoxPro vygeneruje chybovú správu. Po vykonaní príkazu
SELECT zostáva dočasná kurzorová tabuľka otvorená a je aktívna, ale len na čítanie. Akonáhle túto dočasnú
tabuľku zavriete, je odstránená. Dočasné tabuľky môžu existovať ako dočasné súbory na jednotke určené
príkazom SORTWORK.

·        Klauzula DBF NázovTabuľky | TABLE NázovTabuľky, ktorá uloží výsledky dotazu do tabuľky. Ak určíte
tabuľku, ktorá je otvorená a príkazom SET SAFETY je nastavená hodnota OFF, program Visual FoxPro tabuľku
bez varovania prepíše. Ak neurčíte žiadnu príponu, program Visual FoxPro priradí tabuľke príponu .DBF. Potom,
čo je príkaz SELECT vykonaný, bude vytvorená tabuľka otvorená a aktívna.

TO FILE NázovSúboru [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN

Ak uvediete klauzulu TO a neuvediete klauzulu INTO, môžete smerovať výsledky dotazu do textového ASCII
súboru s názvom NázovSúboru, na tlačiareň alebo do hlavného okna programu Visual FoxPro.
Klauzula ADDITIVE pridáva výsledky dotazu k už existujúcemu obsahu textového súboru určeného v klauzule
TO FILE NázovSúboru.
Klauzule TO PRINTER smeruje výsledok dotazu na tlačiareň.
V programoch Visual FoxPro, FoxPro pre Windows a FoxPro pre Macintosh môžete pred začiatkom tlače
zobraziť dialógové okno uvedením voliteľnej klauzule PROMPT. V tomto dialógovom okne môžete zadať
nastavenie tlačiarne. Možnosti nastavenia tlačiarne sú závislé na aktuálne inštalovanom ovládači tlačiarne.
Klauzulu PROMPT umiestnite hneď za klauzulu TO PRINTER. Program FoxPro pre MS-DOS klauzulu PROMPT
ignoruje.

Klauzula TO SCREEN smeruje výsledky dotazu do hlavného okna programu Visual FoxPro alebo do aktívneho
užívateľom definovaného okna.
Keď vytvoríte výsledok dotazu, stĺpce sú pomenované podľa nasledujúcich pravidiel:

·        Ak je vybranou položkou pole s jedinečným názvom, názov stĺpca výstupu je zhodný s názvom poľa.

·       Ak majú dve alebo viac vybraných položiek rovnaký názov, napríklad ak tabuľka s názvom Customer
má pole s názvom STREET a tabuľka s názvom Employees má tiež pole s názvom STREET, majú stĺpce výstupu
názvy Položka_A a Položka_B (STREET_A a STREET_B). U vybranej položky s názvom dlhším ako 10 znakov je
názov skrátený, aby bolo možné pridať znak podtrhnutia a písmeno. Teda napríklad z názvu DEPARTMENT sa
stane DEPARTME_A.

·       Ak je vybranou položkou výraz, jeho stĺpec výstupu má názov EXP_A. Akékoľvek ďalšie výrazy majú
názvy EXP_B, EXP_C atď.
·       Ak vybraná položka obsahuje niektorú funkciu poľa, napríklad funkciu COUNT( ), stĺpec výstupu má
názov CNT_A. Ak iná vybraná položka obsahuje funkciu SUM( ), jej stĺpec výstupu má názov SUM_B.

PREFERENCE NázovPredvoľby

Ak sú výsledky dotazu poslané do okna Prechádzanie, môžete uložiť atribúty a voľby okna Prechádzanie pre
účely neskoršieho využitia uvedením klauzule PREFERENCE. Klauzula PREFERENCE ukladá atribúty alebo
predvoľby bez obmedzenia do zdrojového súboru FOXUSER. Predvoľby môžu byť kedykoľvek načítané.
Prvé vyvolanie príkazu SELECT s klauzulou PREFERENCE NázovPredvoľby príslušnú predvoľbu vytvorí.
Neskoršie vyvolanie príkazu SELECT s rovnakou predvoľbou vráti okno Prechádzanie do príslušného
predvoleného stavu. Akonáhle je okno Prechádzanie zatvorené, predvoľba je aktualizovaná.

Ak opustíte okno Prechádzanie stlačením kombinácie kláves Ctrl+Q, zmeny, ktoré ste v okne Prechádzanie
vykonali, nie sú uložené do zdrojového súboru.

NOCONSOLE

Zabraňuje zobrazeniu výsledkov dotazu poslaných do súboru, na tlačiareň alebo do hlavného okna programu
Visual FoxPro.

PLAIN

Zabraňuje zobrazeniu záhlavia stĺpcov pri zobrazovaní výsledkov dotazu. Použiť argument PLAIN je možné, či
už klauzula TO je, alebo nieje uvedená. Ak je uvedená klauzula INTO, klauzule PLAIN je ignorovaná.

NOWAIT
Zabezpečuje pokračovanie vykonávania programu po otvorení okna Prechádzanie a smerovanie výsledkov
dotazu do neho. Program nečaká, až bude okno Prechádzanie zatvorené, ale pokračuje vo vykonávaní
programu okamžite po príkaze SELECT.
Ak je uvedená klauzula TO SCREEN pre priamy výstup do hlavného okna programu Visual FoxPro alebo do
užívateľom definovaného okna, výstup sa pozastaví v okamihu, keď hlavné okno programu Visual FoxPro alebo
užívateľom definované okno je zaplnené výsledkami dotazu. Ak chcete vidieť ďalšiu časť výsledkov dotazu,
musíte stlačiť ľubovoľnú klávesu. Ak je uvedený argument NOWAIT, výsledky dotazu sú posúvané cez hlavné
okno programu Visual FoxPro alebo užívateľom definované okno bez pozastavenia a čakania na stlačenie
klávesy. Ak je klauzula NOWAIT uvedená s klauzulou INTO, je ignorovaná.

WHERE SpojovaciaPodmienka [AND SpojovaciaPodmienka ...]
       [AND | OR PodmienkaPreFilter [AND | OR PodmienkaPreFilter ...]]

Dáva programu Visual FoxPro pokyn uviesť vo výsledkoch dotazu len určité záznamy. Klauzula WHERE je nutná
pri načítaní dát z viacerých tabuliek.
Argument SpojovaciaPodmienka určuje polia, ktoré spájajú tabuľky v klauzule FROM. Ak uvediete v dotaze viac
než jednu tabuľku, musíte pre každú tabuľku okrem prvej určiť spojovaciu podmienku.

Upozornenie: Pri vytváraní spojovacích podmienok majte na pamäti:

·        Ak v dotaze uvediete dve tabuľky a neurčíte spojovaciu podmienku, je každý záznam z prvej tabuľky
spojený s každým záznamom z druhej tabuľky, ak sú splnené podmienky pre filter. Takýto dotaz môže mať
rozsiahle výsledky.
·        Buďte opatrní, ak používate v spojovacích podmienkach funkcie, ktoré podporujú voliteľné alias alebo
pracovnú oblasť (napríklad funkcie DELETED( ), EOF( ), FOUND( ), RECCOUNT( ) a RECNO( )). Uvedenie alias
alebo pracovnej oblasti v takýchto funkciách môže viesť k neočakávaným výsledkom. Príkaz SELECT nepoužíva
vaše pracovné oblasti; vykonáva ekvivalent príkazu USE ... AGAIN. Dotazy na jednu tabuľku, ktoré použijú
tieto funkcie bez voliteľného alias alebo pracovnú oblasť, vrátia správne výsledky. Naopak dotazy na viac
tabuliek, ktoré tieto funkcie použijú, môžu vracať neočakávané výsledky, dokonca i vtedy, keď nieje uvedený
voliteľný alias alebo pracovná oblasť.

·        Buďte opatrní pri spojovaní tabuliek obsahujúcich prázdne pole, pretože program Visual FoxPro
prázdne polia spája. Ak napríklad spojíte súbor CUSTOMER.ZIP (obsahujúci 100 prázdnych smerovacích kódov)
so súborom INVOICE.ZIP (obsahujúcim 400 prázdnych smerovacích kódov), výsledok dotazu obsahuje naviac
40 000 záznamov ako dôsledok spojenia prázdnych polí. Ak chcete z výsledku dotazu vylúčiť prázdne záznamy,
použite funkciu EMPTY( ).

Ak chcete spojiť viac spojovacích podmienok, musíte použiť operátor AND. Každá spojovacia podmienka má
túto formu:

NázovPoľa1 Porovnanie NázovPoľa2

Argument NázovPoľa1 je názov poľa z jednej tabuľky, argument NázovPoľa2 je názov poľa z inej tabuľky a
argument Porovnanie je jeden z nasledujúcich operátorov.

Operátor          Porovnanie
=        Rovná sa
==       Je totožné
LIKE     SQL LIKE
<>, !=, #         Nerovná sa
>        Väčšie než
>=       Väčšie než alebo sa rovná
<        Menšie než
<=       Menšie než alebo sa rovná
Keď použijete operátor = s reťazcami, pôsobí rozdielne v závislosti na hodnote nastavenej príkazom SET ANSI.
Keď je príkazom SET ANSI nastavená hodnota OFF, program Visual FoxPro vykoná porovnanie reťazcov
spôsobom známym užívateľom programu Xbase. Ak je príkazom SET ANSI nastavená hodnota ON, program
Visual FoxPro rešpektuje štandardy ANSI pre porovnávanie reťazcov. Ďalšie informácie o spôsobe vykonávania
porovnania reťazcov v programe Visual FoxPro nájdete pod heslami SET ANSI a SET EXACT.
Argument PodmienkaPreFilter určuje kritériá, ktoré musia záznamy spĺňať, aby boli zaradené do výsledkov
dotazu. V dotaze môžete uviesť ľubovoľný počet podmienok pre filter, ktoré budú vzájomne spojené
operátormi AND alebo OR. Môžete použiť aj operátor NOT k prevráteniu hodnoty logického výrazu, alebo
funkciu EMPTY( ), ktorá preverí výskyt prázdnych polí. Argument PodmienkaPreFilter môže nadobúdať
ktorúkoľvek z podôb uvedených v nasledujúcich príkladoch:

Príklad 1

NázovPoľa1 Porovnanie NázovPoľa2

customer.cust_id = orders.cust_id
Príklad 2

NázovPoľa Porovnanie Výraz

payments.amount >= 1000


Príklad 3

NázovPoľa Porovnanie ALL (Poddotaz)

company < ALL ;
(SELECT company FROM customer WHERE country = "UK")


Ak je v podmienke pre filter uvedená klauzula ALL, musí pole zodpovedať porovnávacej podmienke pre všetky
hodnoty generované poddotazom, ak má byť jeho záznam zahrnutý do výsledkov dotazu.

Príklad 4

NázovPoľa Porovnanie ANY | SOME (Poddotaz)

company < ANY ;
(SELECT company FROM customer WHERE country = "UK")


Keď podmienka pre filter obsahuje klauzulu ANY alebo SOME, pole musí zodpovedať porovnávacej podmienke
aspoň pre jednu hodnotu generovanú poddotazom.

Príklad 5

NázovPoľa [NOT] BETWEEN Dolná_hranica AND Horná_hranica

customer.postalcode BETWEEN 90000 AND 99999


Príklad skontroluje, či hodnoty v poli ležia v určenom rozpätí hodnôt.

Príklad 6

[NOT] EXISTS (Poddotaz)

EXISTS ;
(SELECT * FROM orders WHERE customer.postalcode = orders.postalcode)


Uvedený príklad skontroluje, či aspoň jeden riadok zodpovedá kritériám v poddotaze. Ak podmienka pre filter
obsahuje klauzulu EXISTS, podmienka pre filter nadobudne logickú hodnotu true (.T.), pokiaľ nieje poddotaz
vyhodnotený ako prázdna množina.

Príklad 7

NázovPoľa [NOT] IN Sada_Hodnôt

customer.postalcode NOT IN ("98052","98072","98034")


Ak podmienka pre filter obsahuje klauzulu IN, musí pole obsahovať jednu z požadovaných hodnôt, aby bol
záznam zahrnutý do výsledkov dotazu.

Príklad 8

NázovPoľa [NOT] IN (Poddotaz)

customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")


Tu musí pole obsahovať jednu z hodnôt vrátených poddotazom, aby bol jeho záznam zahrnutý do výsledkov
dotazu.

Príklad 9
NázovPoľa [NOT] LIKE cVýraz

customer.country NOT LIKE "UK"


Táto podmienka pre filter vyhľadá každé pole, ktoré vyhovuje argumentu cVýraz. Ako časť argumentu cVýraz
môžete použiť zástupné znaky percento (%) a podtrhnutie ( _ ). Znak podtrhnutie reprezentuje v reťazci jeden
neznámy znak.

GROUP BY StĺpecSkupiny [, StĺpecSkupiny ...]

Vytvára v dotaze skupiny založené na hodnotách v jednom alebo vo viacerých stĺpcoch. Ako argument
StĺpecSkupiny môže byť použitý názov poľa tabuľky, názov poľa obsahujúceho funkciu SQL pre pole alebo
číselný výraz indikujúci umiestnenie stĺpca v tabuľke výsledkov (stĺpec najviac vľavo má číslo 1).

HAVING PodmienkaPreFilter

Určuje podmienku pre filter, ktorú musí skupina spĺňať, ak má byť zahrnutá do výsledkov dotazu. Klauzule
HAVING by mala byť používaná s klauzulou GROUP BY. môže obsahovať ľubovoľný počet podmienok pre filter,
ktoré sú vzájomne prepojené operátormi AND alebo OR. Môžete použiť aj klauzulu NOT, ktorá prevracia
hodnotu logického výrazu.
Argument PodmienkaPreFilter nemôže obsahovať poddotaz.
Klauzule HAVING bez klauzule GROUP BY pôsobí ako klauzula WHERE. V klauzule HAVING môžete použiť
lokálny alias a funkcie poľa. Ak vaša klauzula HAVING neobsahuje žiadne funkcie poľa, môžete zvýšiť výkon
využitím klauzule WHERE.

[UNION [ALL] PríkazSELECT]

Kombinuje konečné výsledky jedného príkazu SELECT s konečnými výsledkami iného príkazu SELECT. Vo
východzom nastavení klauzula UNION kontroluje kombinované výsledky a vyraďuje duplicitné riadky. Pomocou
zátvoriek je možné kombinovať niekoľko klauzúl UNION.
Klauzule ALL zabráni klauzule UNION vo vyradení duplicitných riadkov z kombinovaných výsledkov.
Klauzula UNION sa riadi týmito pravidlami:

·       Klauzulu UNION nieje možné použiť ku kombinovaniu poddotazov.
·       Oba príkazy SELECT musia mať rovnaký počet stĺpcov vo svojom výstupe dotazu.
·       Každý stĺpec vo výsledkoch dotazu jedného príkazu SELECT musía mať rovnaký dátový typ a šírku ako
zodpovedajúci stĺpec v druhom príkaze SELECT.
·       Len konečný príkaz SELECT môže obsahovať klauzulu ORDER BY, ktorá musí číslom odkazovať na
výstupné stĺpce. Ak je uvedená klauzula ORDER BY, ovplyvní celý výsledok.

Klauzulu UNION môžete využiť aj pre simuláciu vonkajšieho spojenia.
Keď v dotaze spojíte dve tabuľky, sú do výstupu zahrnuté len záznamy s zodpovedajúcimi hodnotami v
spojovacích poliach. Ak záznam v materskej tabuľke nemá zodpovedajúci záznam v dcérskej tabuľke, nieje
záznam z materskej tabuľke do výstupu zahrnutý. Vonkajšie spojenie umožňuje zahrnúť do výstupu všetky
záznamy z materskej tabuľky súčasne s zodpovedajúcimi záznamami v dcérskej tabuľke. Ak chcete v programe
Visual FoxPro vytvoriť vonkajšie spojenie, je treba použiť vnorený príkaz SELECT, ako je uvedené v
nasledujúcom príklade:

SELECT customer.company, orders.order_id, orders.emp_id ;
        FROM customer, orders ;
        WHERE customer.cust_id = orders.cust_id ;
UNION ;
        SELECT customer.company, 0, 0 ;
        FROM customer ;
        WHERE customer.cust_id NOT IN ;
        (SELECT orders.cust_id FROM orders)

Poznámka: Uistite sa, že ste pred každou bodkočiarkou uviedli medzeru. V opačnom prípade bude výsledok
chybný.

Sekcia príkazu pred klauzulou UNION vyberie záznamy z oboch tabuliek, ktoré majú navzájom si
zodpovedajúce hodnoty. Spoločnosti zákazníkov, ktoré nemajú pridružené faktúry, nie sú zahrnuté. Sekcia
príkazu za klauzulou UNION vyberie tie záznamy v tabuľke customer, ku ktorým neexistujú zodpovedajúce
záznamy v tabuľke orders.
U druhej sekcie príkazu si povšimnite predovšetkým týchto javov:

·       Príkaz SELECT, ktorý je uzavretý v zátvorkách, je spracovaný najprv. Výsledkom tohoto príkazu je
výber všetkých čísel zákazníkov z tabuľky orders.
·        Klauzula WHERE vyhľadá všetky čísla zákazníkov z tabuľky customer, ktoré nie sú v tabuľke orders.
Vzhľadom k tomu, že prvá časť príkazu vybrala všetky spoločnosti, ktoré číslo zákazníka v tabuľke orders mali,
sú teraz vo výsledkoch dotazu zahrnuté všetky spoločnosti z tabuľky customer.
·        Vzhľadom k tomu, že štruktúry tabuliek uvedené v klauzule UNION musia byť identické, sú v druhom
príkaze SELECT dva zástupné symboly reprezentujúce pole orders.order_id a orders.emp_id z prvého príkazu
SELECT.

Poznámka: Zástupné symboly musia byť rovnakého typu ako sú polia, ktoré zastupujú. Ak je pole typu Date,
zástupný symbol by mal byť { / / }. Ak sa jedná o pole typu Character, zástupný symbol by mal byť prázdny
reťazec ("").

ORDER BY Radiaca_položka [ASC | DESC] [, Radiaca_položka [ASC | DESC] ...]

Radí výsledky dotazu podľa dát z jedného alebo viacerých stĺpcov. Každý argument Radiaca_položka musí
zodpovedať niektorému stĺpcu vo výsledkoch dotazu; môže byť využitá jedna z uvedených položiek:

·       Pole v tabuľke určenej klauzulou FROM, ktoré je vybranou položkou hlavného príkazu SELECT (nie
poddotazu).
·       Číselný výraz označujúci umiestnenie stĺpca vo výslednej tabuľke (stĺpec celkom vľavo má číslo 1).

Klauzula ASC určuje vzostupné radenie výsledkov dotazu podľa jednej či niekoľkých radiacich položiek; toto
radenie sa používa ako východzie.
Parameter DESC určuje zostupné poradie výsledkov dotazu.
Ak v klauzule ORDER BY neurčíte žiadne poradie, zostanú výsledky dotazu nezotriedené.

Poznámky

Príkaz SELECT je príkaz jazyka SQL, ktorý je vstavaný do programu Visual FoxPro tak ako ktorýkoľvek iný
príkaz programu Visual FoxPro. Keď využijete pri vytvorení dotazu príkaz SELECT, program Visual FoxPro dotaz
interpretuje a načíta z tabuliek určené dáta. Dotaz je možné vytvoriť pomocou príkazu SELECT zadanom týmito
spôsobmi:

·         z okna Príkazy,
·         v programe Visual FoxPro (ako ktorýkoľvek iný príkaz programu Visual FoxPro),
·         v Návrhári dotazu.

Keď vydáte príkaz SET TALK ON a vykonáte príkaz SELECT, zobrazí sa čas potrebný k vykonaniu dotazu a
počet záznamov obsiahnutých vo výsledku. Premenná _TALLY obsahuje počet záznamov vo výsledku dotazu.

Poznámka: Poddotaz, na ktorý sú odkazy v ďalej uvedených argumentoch, je príkaz SELECT, ktorý je zahrnutý
do príkazu SELECT a musí byť uzavretý v zátvorkách. Klauzula WHERE môže obsahovať viac poddotazov na tej
istej úrovni (nie vnorené); viď sekcia Argumenty. Poddotazy môžu obsahovať viac spojovacích podmienok.

* V nasledujúcom príklade je využitý príkaz ON ERROR k vytvoreniu rutiny ošetrujúcej chybu s názvom
* errhand. Chyba je vygenerovaná nesprávne zapísaným príkazom (BRWS). Rutina ošetrujúca chyby vytvorí
* pomocou funkcie AERROR( ) pole obsahujúce informácie o chybe. Potom sú tieto informácie zobrazené.

ON ERROR DO errhand         && Názov procedúry ošetrujúcej chyby je errhand

BRWS && Chyba syntaxe
ON ERROR && Obnovenie systémového ošetrenia chýb

PRECEDURE errhand
    = AERROR(aErrorArray) && Informácie o poslednej chybe
    CLEAR
    ? 'Informácie o chybe' && Zobrazenie správy
    FOR n = 1 TO 6 && Zobrazenie všetkých prvkov poľa
          ? aErrorArray(n)
    ENDFOR

Príklad

* Príklad 1 zobrazí názvy všetkých spoločností v tabuľke customer
* (jedno pole z jednej tabuľky).

* Príklad 1
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
SELECT customer.company ;
      FROM customer
* Príklad 2 zobrazí obsah troch polí z dvoch tabuliek a spojí tieto dve tabuľky na základe pole cust_id. Pre obe
* tabuľky použije lokálny alias.

* Príklad 2
SELECT a.company, b.order_date, b.shipped_on ;
      FROM customer a, orders b ;
      WHERE a.cust_id = b.cust_id


* Príklad 3 zobrazí len záznamy s jedinečnými údajmi v určených poliach.

* Príklad 3
SELECT DISTINCT a.company, b.order_date, b.shipped_on ;
      FROM customer a, orders b ;
      WHERE a.cust_id = b.cust_id


* Príklad 4 zobrazí pole country, postalcode a company vo vzostupnom poradí.

* Príklad 4
SELECT country, postalcode, company ;
      FROM customer ;
      ORDER BY country, postalcode, company


* Príklad 5 uloží obsah polí z dvoch tabuliek do tretej tabuľky.

* Príklad 5
SELECT a.company, b.order_date, b.shipped_on ;
      FROM customer a, orders b ;
      WHERE a.cust_id = b.cust_id ;
      INTO TABLE custship.dbf
BROWSE
CLOSE DATA


* Príklad 6 zobrazí len záznamy s dátumom objednávky nepresahujúcim 16.2.1995.

* Príklad 6
SELECT a.company, b.order_date, b.shipped_on ;
      FROM customer a, orders b ;
      WHERE a.cust_id = b.cust_id ;
      AND b.order_date < {02/16/95}


* Príklad 7 zobrazí názvy všetkých spoločností z tabuľky customer so smerovým číslom, ktoré zodpovedá
* niektorému smerovému číslu uvedenému v tabuľke orders.

* Príklad 7
SELECT company FROM customer a WHERE ;
      EXISTS (SELECT * FROM orders b WHERE a.postalcode = b.postalcode)


* Príklad 8 zobrazí všetky záznamy z tabuľky customer, v ktorých začína názov spoločnosti písmenom veľké C
* a jeho dĺžka nie je určená.

* Príklad 8
SELECT * FROM customer a WHERE a.company LIKE "C%"


* Príklad 9 zobrazí všetky záznamy z tabuľky customer, v ktorých názov zeme začína písmenom veľké U, za
* ktorým je jeden neznámy znak.

* Príklad 9
SELECT * FROM customer a WHERE a.company LIKE "U_"


* Príklad 10 zobrazí názvy všetkých miest z tabuľky customer veľkými písmenami a stĺpcu výstupu priradí
* názov CityList.

* Príklad 10
SELECT UPPER(city) AS CityList FROM customer
UPDATE - SQL
Aktualizuje záznamy v tabuľke novými hodnotami.

Syntax

UPDATE [NázovDatabázy1!]NázovTabuľky1
SET NázovStĺpca1 = eVýraz1
     [, NázovStĺpca2 = eVýraz2 ...]
     WHERE PodmienkyPreFilter1 [AND | OR PodmienkyPreFilter2 ...]]

Argumenty

UPDATE [NázovDatabázy1!]NázovTabuľky1

Určuje tabuľku, ktorej záznamy sú aktualizované novými hodnotami.
Argument NázovDatabázy1! určuje názov neaktuálnej databázy obsahujúcej tabuľky. Názov databázy
obsahujúcej požadovanú tabuľku je nutné zahrnúť v prípade, že táto databáza nie je aktuálna. Názov databázy
a názov tabuľky oddeľte výkričníkom (!).

SET NázovStĺpca1 = eVýraz1
     [, NázovStĺpca2 = eVýraz2

Určuje stĺpce, ktoré sú aktualizované novými hodnotami. Ak vynecháte klauzulu WHERE, bude každý riadok
stĺpca aktualizovaný rovnakou hodnotou.

WHERE PodmienkyPreFilter1 [AND | OR PodmienkyPreFilter2 ...]]

Určuje záznamy aktualizované novými hodnotami.
Argument PodmienkyPreFilter určuje kritériá, ktoré musia spĺňať záznamy, ktoré majú byť aktualizované
novými hodnotami. Môžete zadať ľubovolný počet podmienok pre filter spojených navzájom operátormi AND
alebo OR. Je možné použiť aj operátor NOT, ktorý preklopí hodnotu logického výrazu, alebo funkciu EMPTY( ),
ktorá zistí prítomnosť prázdneho poľa.

Poznámky

Príkaz UPDATE - SQL môže aktualizovať len záznamy v jednej tabuľke.
Na rozdiel od príkazu REPLACE používa príkaz UPDATE - SQL zamykanie záznamov pri aktualizácii niekoľkých
záznamov v tabuľke otvorených pre zdieľaný prístup. Tým sa znižuje možnosť konfliktu vo viacužívateľskom
prostredí, môže sa však znížiť výkon. Maximálneho výkonu dosiahnete, ak otvoríte tabuľky pre výhradný
prístup alebo ak zamknete tabuľky prostredníctvom funkcie FLOCK( ).

Príklad:

* V nasledujúcom príklade je otvorená tabuľka customer v databáze testdata. Príkazom UPDATE -SQL sú
najprv
* nastavené všetky hodnoty v poli maxordamt na hodnotu 0. Potom sú pomocou príkazu UPDATE -SQL všetky
* hodnoty v poli maxordamt väčšie než 100 zmenšené o 10.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE Customer   && Otvorenie tabuľky customer

UPDATE customer SET maxordamt = 0

UPDATE customer;
    SET maxordamt = maxordamt - 10;
    WHERE maxordamt > 100



SQLCANCEL()
Vyžiada si zrušenie vykonávaného príkazu SQL.

Syntax

SQLCANCEL(nManipulátorSpojenia)

Argumenty
nManipulátorSpojenia

Určuje manipulátor aktívneho spojenia, ktorého príkaz jazyka SQL má byť zrušený.

Vracia typy

Numeric

Poznámky

Ak je zrušenie príkazu vykonané úspešne, vráti funkcia SQLCANCEL( ) hodnotu 1. Ak dôjde k chybe na úrovni
spojenia, vráti hodnotu - 1, ak dôjde k chybe na úrovni prostredia, vráti hodnotu - 2.
Funkcia SQLCANCEL( ) zruší vykonávanie funkcií SQLCOLUMNS( ), SQLEXEC( ), SQLMORERESULTS( ) a
SQLTABLES( ) v asynchrónnom režime. Tento režim je možné zriadiť pomocou funkcie SQLSETPROP( ).

* V ďalej uvedenom príklade je úspešne vyvolaná funkcia SQLCONNECT( ) a hodnota vrátená touto funkciou je
* uložená do pamäťovej premennej s názvom gnConnHandle.

* Pomocou funkcie SQLEXEC( ) je odoslaný príkaz SQL do zdroja dát a výsledky sú vrátené do kurzorovej
* tabuľky. Potom je dotaz zastavený vyvolaním funkcie SQLCANCEL( ).

*--   syntax: SQLCANCEL(nManipulátorSpojenia)
*--   ruší funkcie: SQLCOLUMNS(), SQLEXEC(), SQLMORERESULTS() a SQLTABLE()
*--   v asynchrónnom režime. Tento režim je možné riadiť pomocou funkcie SQLSETPROP()
*--   nManipulátorSpojenia - určuje manipulátor príkazu, ktorý má byť zrušený

*-- príklad:
= SQLSETPROP(gnConnHandle, 'asynchronous', .T.) && príkaz bude zastavený funkciou SQLEXEC( )
= SQLEXEC(gnConnHandle, 'SELECT * FROM authors')
= SQLCANCEL(gnConnHandle) && Zrušenie
*-- návratové hodnoty
DO CASE
  CASE gnConnHandle = 1
    *-- zrušenie bolo úspešné
  CASE gnConnHandle = -1
    *-- chyba na úrovni spojenia
  CASE gnConnHandle = -2
    *-- chyba na úrovni prostredia
ENDCASE



SQLCOLUMNS()
Uloží zoznam názvov stĺpcov a informácie o každom z nich pre určenú tabuľku zdroja dát do kurzorovej tabuľky
programu Visual FoxPro.

Syntax

SQLCOLUMNS(nManipulátorSpojenia, NázovTabuľky
     [, FOXPRO | NATIVE] [, NázovKurzorovejTabuľky])

Argumenty

nManipulátorSpojenia

Aktívny manipulátor spojenia.

NázovTabuľky

Určuje názov kurzorovej tabuľky, ktorej názvy stĺpcov funkcia vracia.

FOXPRO | NATIVE

Určuje formát informácií v stĺpcoch výslednej sady. Skontrolujte, či klauzule FOXPRO alebo NATIVE sú uvedené
v úvodzovkách. Voľba formátu NATIVE uloží informácie v stĺpcoch v rovnakom formáte ako v zdroji dát. Voľba
formátu FOXPRO uloží informácie v stĺpcoch vo formáte používanom v tabuľke programu Visual FOXPRO alebo
v kurzorovej tabuľke, ktorá sa vytvorí pri importovaní tabuľky zdroja dát do programu Visual FOXPRO. Ak
vynecháte voľbu FOXPRO alebo NATIVE, použije sa ako východzí formát FOXPRO.
V Nasledujúcej tabuľke sú zobrazené stĺpce vo výslednej sade vo formáte FOXPRO.

Názov stĺpca      Popis
Field_name       Názov stĺpca
Field_type       Dátový typ v stĺpci
Field_len        Dĺžka stĺpca
Field_dec        Počet desatinných miest
V nasledujúcej tabuľke sú uvedené stĺpce vo výslednej sade vo formáte NATIVE. Vo formáte NATIVE môžu byť
vo výslednej sade zahrnuté aj ďalšie stĺpce (podľa zdroja dát), ktoré nie sú uvedené v tejto tabuľke.

Názov stĺpca     Popis
Table_qualifier Identifikácia oprávneného pre tabuľky
Table_owner      Identifikácia vlastníka tabuľky
Table_name       Identifikácia tabuľky
Column_name      Identifikácia stĺpca
Data_type        Dátový typ v stĺpci
Type_name        Názov dátového typu v stĺpci
Precision        Presnosť stĺpca
Length           Veľkosť prenášaných dát
Scale            Merítko stĺpca
Radix            Báza pre dáta typu Numeric
Nullable         Podpora hodnôt null
Remarks                    Popis stĺpca
Ak tabuľka zadaná argumentom NázovTabuľky neexistuje a je zvolený formát NATIVE, vráti funkcia
SQLCOLUMNS( ) logickú hodnotu true (.T.) a vytvorí prázdnu tabuľku alebo kurzorovú tabuľku. Ak tabuľka
zadaná argumentom NázovTabuľky neexistuje a je zvolený formát FOXPRO, vráti funkcia SQLCOLUMNS( )
logickú hodnotu false (.F.).

NázovKurzorovejTabuľky

Určuje názov kurzorovej tabuľky pre výslednú sadu. Ak nezadáte názov kurzorovej tabuľky, bude použitý
východzí názov SQLRESULT.

Vracia typy

Numeric

Poznámky

Ak je kurzorová tabuľka úspešne vytvorená, vracia funkcia SQLCOLUMNS( ) hodnotu 1. Kým sa funkcia
SQLCOLUMNS( ) vykonáva, vracia hodnotu 0. Ak sa objaví chyba na úrovni spojenia, vracia funkcia
SQLCOLUMNS( ) hodnotu - 1, ak sa objaví chyba na úrovni prostredia, vracia hodnotu - 2.
Funkcia SQLCOLUMNS( ) je jednou zo štyroch funkcií, ktoré môžu byť vykonané buď synchrónne, alebo
asynchrónne. Spôsob vykonania určuje hodnota nastavenia vlastnosti Asynchronous pomocou funkcie
SQLSETPROP( ). V asynchrónnom režime musíte volať funkciu SQLCOLUMNS( ) opakovane, až kým nebude
vrátená iná hodnota než false (.F.) (funkcia sa ešte vykonáva).

* V dole uvedenom príkaze je vyvolanie funkcie SQLCONNECT( ) úspešné a hodnota vrátená touto funkciou je
* uložená do pamäťovej premennej nazvanej gnConnHandle. Pomocou funkcie SQLCOLUMNS( ) je vytvorená
* kurzorová tabuľka pomenovaná MyCursor obsahujúca informácie o stĺpcoch v tabuľke authors.

= SQLCOLUMNS(gnConnHandle, 'authors', 'FOXPRO', 'MyCursor')



SQLCOMMIT()
Potvrdí transakciu.

Syntax

SQLCOMMIT(nManipulátorSpojenia)

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia ku zdroju dát vrátený funkciou SQLCONNECT( ).

Vracia typy

Logical

Poznámky
Ak chcete potvrdiť transakciu, použite funkciu SQLCOMMIT( ). Ak je transakcia úspešne ukončená, vracia
funkcia SQLCOMMIT( ) hodnotu 1, v opačnom prípade vracia hodnotu -1. Ak funkcia SQLCOMMIT( ) vráti
hodnotu -1, môžete pomocou funkcie AERROR( ) určiť, prečo nemohla byť transakcia potvrdená.
V prípade transakcií, ktorých vlastnosť Transactions je pomocou funkcie SQLSETPROP( ) nastavená na hodnotu
2 (ručné riadenie spracovanie transakcií), môžete odoslať viac aktualizácií do vzdialených tabuliek a potvrdiť
všetky aktualizácie pomocou funkcie SQLCOMMIT( ).
Aktualizácie je možné vrátiť do pôvodného stavu pomocou funkcie SQLROLLBACK( ).

Príklad

* V nižšie uvedenom príklade je vyvolanie funkcie SQLCONNECT( ) úspešné a hodnota vrátená touto funkciou
je
* uložená do pamäťovej premennej s názvom gnConnHandle. Pomocou funkcie SQLSETPROP( ) je nastavená
* vlastnosť Transactions na hodnotu 2 (ručne), čo umožňuje použiť funkcie SQLCOMMIT( ) i SQLROLLBACK( ).

* Tabuľka authors je upravená pomocou funkcie SQLEXEC( ) a zmeny vykonané v tabuľke sú potvrdené
* pomocou funkcie SQLCOMMIT( ).

= SQLSETPROP(gnConnHandle, 'Transactions', 2) && Ručne riadená transakcia
= SQLEXEC(gnConnHandle, "INSERT INTO authors (au_id, au_lname);
    VALUES ('aupoe', 'Poe')") && Úpravy tabuľky authors
= SQLCOMMIT(gnConnHandle) && Potvrdenie zmien



SQLCONNECT()
Zriadi spojenie so zdrojom dát.

Syntax

SQLCONNECT([NázovZdrojaDát, cIdentifikačnýKódUžívateľa, cHeslo | cNázovSpojenia])

Argumenty

NázovZdrojaDát

Určuje názov zdroja dát definovaného v súbore ODBC.INI.

cIdentifikačnýKódUžívateľa

Určuje identifikáciu užívateľa používanú pri prihlásení k zdroju dát.

cHeslo

Určuje heslo chrániace prístup ku zdroju dát.

cNázovSpojenia

Určuje pomenované spojenie vytvorené príkazom CREATE CONNECTION.

Vracia typy

Numeric

Poznámky

Ak bolo spojenie úspešne zriadené, vracia funkcia SQLCONNECT( ) kladný nenulový číselný manipulátor. Tento
manipulátor je treba uložiť do pamäťovej premennej a tú použiť pri každom následnom volaní niektorej funkcie,
ktorá vyžaduje informáciu o manipulátore spojenia. Ak nemohlo byť spojenie zriadené, vracia funkcia
SQLCONNECT( ) hodnotu - 2.
Ak je funkcia SQLCONNECT( ) vyvolaná bez ďalších argumentov, môžete zobraziť dialógové okno, vybrať
spojenie alebo zdroj dát, v ktorom môžete zvoliť zdroj dát.

Príklad

* V nasledujúcom príklade predpokladajme dostupný zdroj dát ODBC s názvom MyFoxSQLNT a identifikačný
* kód užívateľa zdroja dát „sa". Je vyvolaná funkcia SQLCONNECT( ) a hodnota vrátená touto funkciou je
* uložená do pamäťovej premennej nazvanej gnConnHandle.

* Ak prebehne spojenie so zdrojom dát úspešne, vráti funkcia SQLCONNECT( ) kladné číslo, zobrazí sa
* dialógové okno a pomocou funkcie SQLDISCONNECT( ) je vykonané odpojenie od zdroja dát.
* Ak sa spojenie so zdrojom dát nenadviaže, vráti funkcia SQLCONNECT() záporné číslo a zobrazí sa chybová
* správa.

STORE SQLCONNECT('MyFoxSQLNT', 'sa') TO gnConnHandle
IF gnConnHandle <= 0
     = MESSAGEBOX('Spojenie nie je možné zriadiť', 16, 'Chyba spojenia SQL')
ELSE
     = MESSAGEBOX('Spojenie bolo zriadené', 48, 'Správa o spojení SQL')
     = SQLDISCONNECT(gnConnHandle)
ENDIF



SQLDISCONNECT()

Ukončí spojenie so zdrojom dát.

Syntax

SQLDISCONNECT(nManipulátorSpojenia)

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ). Ak chcete všetky aktívne
spojenia ukončiť, zadajte ako argument nManipulátorSpojenia hodnotu 1.

Vracia typy

Numeric

Poznámky

Ak je spojenie úspešne ukončené, vráti funkcia SQLDISCONNECT( ) hodnotu 1. Ak sa objavila chyba na úrovni
spojenia, vráti hodnotu - 1, ak sa objavila chyba na úrovni prostredia, vráti hodnotu - 2.
Funkcia SQLDISCONNECT( ) ukončí spojenie so zdrojom dát. Pritom musíte zadať príslušný manipulátor
spojenia, ktorý vrátila funkcia SQLCONNECT( ) pri zriadení spojenia.

Poznámka: Ak vykonáte funkciu SQLDISCONNECT( ) v asynchrónnej postupnosti funkcií alebo počas
transakcie, vygeneruje sa chyba.

* V uvedenom príklade je k dispozícii zdroj dát ODBC s názvom MyFoxSQLNT, identifikačný kód užívateľa
zdroja
* dát je „sa". Je vyvolaná funkcia SQLCONNECT( ) a hodnota vrátená touto funkciou je uložená do pamäťovej
* premennej nazvanej gnConnHandle.

* Ak prebehne spojenie so zdrojom dát úspešne, vracia funkcia SQLCONNECT( ) kladné číslo, zobrazí sa
* dialógové okno a pomocou funkcie SQLDISCONNECT( ) je vykonané odpojenie od zdroja dát.

* Ak sa spojenie so zdrojom dát nenadviaže, vráti funkcia SQLCONNECT( ) záporné číslo a zobrazí sa chybová
* správa.

STORE SQLCONNECT('MyFoxSQLNT', 'sa') TO gnConnHandle
IF gnConnHandle <= 0
     = MESSAGEBOX('Spojenie nie je možné zriadiť', 16, 'Chyba spojenia SQL')
ELSE
     = MESSAGEBOX('Spojenie bolo zriadené', 48, 'Správa o spojení SQL')
     = SQLDISCONNECT(gnConnHandle)
ENDIF



SQLEXEC()
Pošle príkaz SQL ku zdroju dát, kde je spracovaný.

Syntax

SQLEXEC(nManipulátorSpojenia, cPríkazSQL, [NázovKurzorovejTabuľky])

Argumenty
nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ).

cPríkazSQL

Určuje príkaz SQL predaný zdroju dát.
Príkaz SQL môže obsahovať parametrickú klauzulu WHERE, ktorá vytvára parametrický pohľad. Všetky
parametre v klauzule WHERE musia byť definované pred vyvolaním funkcie SQLEXEC( ). Ak sú parametre
napríklad pamäťové premenné, musia byť tieto premenné vytvorené a inicializované pred vyvolaním funkcie
SQLEXEC( ). Ďalšie informácie o vytváraní parametrických pohľadov nájdete v kapitole 8, „Tvorba pohľadov
pre viac tabuliek", v Príručke vývojára.

NázovKurzorovejTabuľky

Určuje názov kurzorovej tabuľky programu Visual FOXPRO, do ktorej je prenesená výsledná sada. Ak
nezahrniete názov pomocnej tabuľky, použije sa východzí názov SQLRESULT.
V prípade, že je výsledných sád viac, sú názvy ďalších kurzorových tabuliek odvodené od názvu prvej tabuľky,
líši sa len po sebe idúcimi číslami pripojenými za názov prvej kurzorovej tabuľky.

Vracia typy

Numeric

Poznámky

Funkcia SQLEXEC( ) vracia počet výsledných sád, ak je ich viac než jedna. V prípade, že vykonávanie funkcie
SQLEXEC( ) prebieha, vracia táto funkcia hodnotu 0, ak je vykonávanie skončené, vracia hodnotu 1. Ak sa
vyskytne chyba na úrovni spojenia vracia funkcia SQLEXEC( ) hodnotu -1.
Ak generuje príkaz SQL jednu výslednú sadu, uloží ju funkcia SQLEXEC( ) do zadanej kurzorovej tabuľky
programu Visual FOXPRO. Ak generuje príkaz SQL dve alebo niekoľko výsledných sád a vlastnosť BatchMode je
pomocou funkcie SQLSETPROP( ) nastavená na hodnotu 1 (dávkový režim), môžete priradiť názov každej
výslednej sade tak, že nastavíte vlastnosť BatchMode na hodnotu 0 a pri každom volaní funkcie
SQLMORERESULTS( ) zmeníte názov kurzorovej tabuľky.

Funkcia SQLEXEC( ) je jednou zo štyroch funkcií, ktoré môžu byť vykonané buď synchrónne, alebo
asynchrónne. Spôsob vykonania určuje hodnota nastavenia vlastnosti Asynchronous pomocou funkcie
SQLSETPROP( ). V asynchrónnom režime musíte volať funkciu SQLEXEC( ) opakovane, pokiaľ nebude vrátená
iná hodnota než 0 (vykonanie funkcie nie je ešte dokončené).

Príklad

*   V uvedenom príklade je volanie funkcie SQLCONNECT( ) úspešné, hodnota vrátená touto funkciou je uložená
*   do pamäťovej premennej s názvom gnConnHandle.
*   Pomocou funkcie SQLEXEC( ) je možné vykonať dotaz, ktorý vráti všetky informácie z tabuľky authors do
*   kurzorovej tabuľky MyCursor.

= SQLSETPROP(gnConnHandle, 'asynchronous', .F.)
= SQLEXEC(gnConnHandle, 'SELECT * FROM authors', 'MyCursor')



SQLGETPROP()
Vráti aktuálne alebo východzie nastavenie pre aktívne spojenie.

Syntax

SQLGETPROP(nManipulátorSpojenia, cNastavenie)

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ). Ak určíte ako argument
nManipulátorSpojenia hodnotu 0, vracia funkcia SQLGETPROP( ) nastavenie pre prostredie.

cNastavenie

Určuje nastavenie. Zoznam možných nastavení nájdete pod heslom SQLSETPROP( ).
Vracia typy

Character, Numeric alebo Logical

Poznámky

Ak sa vyskytne chyba na úrovni spojenia, je vrátená hodnota - 1. V prípade chyby na úrovni prostredia je
vrátená hodnota - 2.

Príklad

*   V uvedenom príklade je vyvolaná funkcia SQLCONNECT( ), hodnota vrátená touto funkciou je uložená do
*   pamäťovej premennej s názvom gnConnHandle.
*   Funkcia SQLSETPROP( ) zmení nastavenie vlastnosti Asynchronous na hodnotu true (.T.) a na hodnotu false
*   (.F.) a funkcia SETGETPROP( ) zobrazí novú hodnotu vlastnosti Asynchronous.

CLEAR
= SQLSETPROP(gnConnHandle, 'asynchronous',      .T.)
? SQLGETPROP(gnConnHandle, 'asynchronous')       && Zobrazenie .T.
= SQLSETPROP(gnConnHandle, 'asynchronous',      .F.)
? SQLGETPROP(gnConnHandle, 'asynchronous')       && Zobrazenie .F.



SQLMORERESULTS()
Ak je k dispozícii niekoľko výsledných sád, skopíruje do pomocnej tabuľky programu Visual FOXPRO ďalšiu
výslednú sadu.

Syntax

SQLMORERESULTS(nManipulátorSpojenia)

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ).

Vracia typy

Numeric

Poznámky

Funkcia SQLMORERESULTS( ) určí, či je po vykonaní príkazu SQL funkciou SQLEXEC( ) v nedávkovom režime k
dispozícii niekoľko výsledných sád. Ak áno, sú skopírované do kurzorovej tabuľky jedna po druhej.
Ak nie je vykonanie príkazu SQL dokončené, vracia funkcia SQLMORERESULTS( ) hodnotu 0, po dokončení
vykonávania príkazu SQL vracia hodnotu 1. Ak neboli nájdené žiadne ďalšie dáta, vracia funkcia
SQLMORERESULTS( ) hodnotu 2. V nedávkovom režime je treba volať funkciu SQLMORERESULTS( ) po
každom úspešnom volaní funkcie SQLEXEC( ) tak dlho, kým funkcia SQLMORERESULTS( ) nevráti hodnotu 2
(ďalšie dáta neboli nájdené). O tom, či bude príkaz SQL vykonaný funkciou SQLEXEC( ) v dávkovom alebo v
nedávkovom režime, rozhoduje nastavenie voľby dávkového režimu pomocou funkcie SQLSETPROP( ).

Ak sa vyskytne chyba na úrovni spojenia, vracia funkcia SQLMORERESULTS( ) hodnotu - 1, ak sa vyskytne
chyba na úrovni prostredia, vracia hodnotu - 2.
Funkcia SQLMORERESULTS( ) je jednou zo štyroch funkcií, ktoré môžu byť vykonané buď synchrónne, alebo
asynchrónne. Spôsob vykonania určuje hodnota nastavenia vlastnosti Asynchronous pomocou funkcie
SQLSETPROP( ). V asynchrónnom režime musíte volať funkciu SQLMORERESULTS( ) opakovane, až kým
nebude vrátená iná hodnota než 0 (vykonávanie funkcie nie je ešte dokončené).

Príklad

* V ďalej uvedenom príklade je vyvolaná funkcia SQLCONNECT( ), hodnota vrátená touto funkciou je uložená
* do pamäťovej premennej s názvom gnConnHandle. Pomocou funkcie SQLSETPROP( ) je nastavená vlastnosť
* BatchMode na logickú hodnotu false (.F.), je možné teda načítať jednotlivé výsledné sady.

* Funkcia SQLMORERESULTS( ) je volaná dvakrát, Pretože je treba vytvoriť dve kurzorové tabuľky obsahujúce
* výsledky dotazu vykonaného funkciou SQLEXEC( ). Potom je pomocou príkazu SET zobrazené okno pohľad
* a kurzorové tabuľky vytvorené funkciou SQLEXEC( ).

= SQLSETPROP(gnConnHandle, 'BatchMode', .F.) && Jednotlivé výsledné sady
= SQLEXEC(gnConnHandle, 'SELECT * FROM authors;
    SELECT * FROM titles')
= SQLMORERES(gnConnHandle) && Prvá výsledná sada
= SQLMORERES(gnConnHandle) && Druhá výsledná sada



SQLROLLBACK()
Zruší všetky zmeny vykonané počas aktuálnej transakcie.

Syntax

SQLROLLBACK(nManipulátorSpojenia)

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia ku zdroju dát vrátený funkciou SQLCONNECT( ).

Vracia typy

Logical

Poznámky

Ak je transakcia úspešne vrátená do pôvodného stavu, vracia funkcia SQLROLLBACK( ) hodnotu 1; v opačnom
prípade vracia hodnotu -1. Ak vráti funkcia SQLROLLBACK( ) hodnotu -1, môžete pomocou funkcie AERROR( )
určiť, prečo nemohla byť transakcia vrátená do pôvodného stavu.
V prípade transakcií, ktorých vlastnosť Transactions je pomocou funkcie SQLSETPROP( ) nastavená na hodnotu
2 (ručné riadenie spracovania transakcií), môžete odoslať viac aktualizácií do vzdialených tabuliek a potvrdiť
všetky aktualizácie pomocou funkcie SQLCOMMIT( ).
Aktualizované údaje môžu byť potvrdené pomocou funkcie SQLCOMMIT( ).

Príklad

*   V ďalej uvedenom príklade je vyvolaná funkcia SQLCONNECT( ), hodnota vrátená touto funkciou je uložená
*   do pamäťovej premennej pomenovanej gnConnHandle. Vlastnosť Transactions je pomocou funkcie
*   SQLSETPROP( ) nastavená na hodnotu 2 (ručne), je možné teda použiť funkcie SQLCOMMIT( ) a
*   SQLROLLBACK( ).

* Tabuľka authors je upravená pomocou funkcie SQLEXEC( ) a zmeny vykonané v tabuľke sú zrušené pomocou
* funkcie SQLROLLBACK( ).

= SQLSETPROP(gnConnHandle, 'Transactions', 2) && Ručne riadená transakcia
= SQLEXEC(gnConnHandle, "INSERT INTO authors (au_id, au_lname);
    VALUES ('aupoe', 'Poe')")
= SQLROLLBACK(gnConnHandle)



SQLSETPROP()
Určuje nastavenie aktívneho spojenia.

Syntax

SQLSETPROP(nManipulátorSpojenia, cNastavenie [, eVýraz])

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ).

cNastavenie

Určuje príslušné nastavenie. V nasledujúcej tabuľke je uvedený zoznam hodnôt argumentu cNastavenie.

Nastavenie       Popis
Asynchronous     Určuje, či sú výsledné sady vrátené synchrónne (hodnota false (.F.),
                 východzie nastavenie) alebo asynchrónne (hodnota true (.T.)).
                 Čítanie a zápis.
BatchMode        Určuje, či funkcia SQLEXEC( ) vracia výsledné sady naraz (hodnota true
                 (.T.), východzie nastavenie) alebo po jednej pomocou funkcie
                 SQLMORERESULTS( ) (hodnota false (.F.)).
                 Čítanie a zápis.
ConnectBusy     Ak zdieľané spojenie je aktívne, obsahuje hodnotu true (.T.), v opačnom
                 prípade obsahuje hodnotu false (.F.).
                 Len čítanie.
ConnectName Názov spojenia.
                 Len čítanie.
ConnectString Prihlasovací spojovací reťazec.
                 Čítanie a zápis.
ConnectTimeOut Určuje čas, ktorý musí uplynúť (v sekundách), než bude vrátená chyba
                 dĺžky spojenia. Ak určíte hodnotu 0 (východzie nastavenie), nie je doba
                 čakania určená a chyba dĺžky nenastane nikdy. Hodnota argumentu
                 ConnectTimeOut môže byť od 0 do 600.
                 Čítanie a zápis.
DataSource      Názov zdroja dát definovaného v súbore ODBC.INI.
                 Čítanie a zápis.
DispLogin        Obsahuje číselnú hodnotu určujúcu, kedy sa zobrazí dialógové prihlasovacie
                 okno ODBC. Do tohoto argumentu je možné nastaviť tieto hodnoty:
                 1 alebo DB_COMPLETE (z FOXPRO.H). 1 je východzie nastavenie.
                 2 alebo DB_PROMPT (z FOXPRO.H).
                 3 alebo DB_NOPROMPT (z FOXPRO.H).
                 Ak je určená hodnota 1 alebo DB_COMPLETE, zobrazí sa
                 dialógové prihlasovacie okno ODBC len v prípade, že chýbajú nejaké
                 požadované informácie. Ak je určená hodnota 2 alebo DB_PROMPT,
                 zobrazí sa dialógové prihlasovacie okno ODBC vždy, je možné teda meniť
                 nastavenie pred nadviazaním spojenia. Ak je určená hodnota 3 alebo
                 DB_NOPROMPT, nezobrazí sa dialógové prihlasovacie okno ODBC a v
                 prípade, že požadované prihlasovacie informácie nie sú k dispozícii,
                 vygeneruje program Visual FOXPRO chybu.
                 Čítanie a zápis.
DispWarnings Určuje, či sa zobrazia chybové správy (hodnota true (.T.)) alebo nie
                 (hodnota false (.F.), východzie nastavenie).
                 Čítanie a zápis.
IdleTimeout      Interval dĺžky (v sekundách). Po určenom časovom intervale sú aktívne
                 spojenia deaktivované. Východzia hodnota je 0 (nekonečné čakanie.).
                 Čítanie a zápis.
ODBChdbc         Vnútorný manipulátor spojenia ODBC, ktorý môžu použiť súbory
                 externých knižníc (súbory FLL) k volaniu ODBC.
                 Len čítanie.
ODBChstmt       Vnútorný manipulátor príkazu ODBC, ktorý môžu použiť súbory
                 externých knižníc (súbory FLL) k volaniu ODBC.
                 Len čítanie.
PacketSize      Veľkosť paketu siete použitého spojenia. Nastavením tejto hodnoty je
                 možné zlepšiť výkon. Východzie nastavenie je 4KB.
                 Čítanie a zápis
Password         Heslo spojenia.
                  Len čítanie.
QueryTimeOut Určuje dobu (v sekundách), po ktorú sa čaká, než bude vrátená obecná
                  chyba dĺžky. Ak zadáte hodnotu 0, je čakanie nekonečné a chyba dĺžky
                  nebude vrátená nikdy. Môže nadobúdať hodnoty od 0 do 600.
                  Východzia hodnota je 15.
                  Čítanie a zápis.
Transactions      Obsahuje číselnú hodnotu, ktorá určuje, ako spojenie riadi spracovanie
                  transakcií vo vzdialenej tabuľke. Môže nadobúdať tieto hodnoty:1 alebo
                  DB_TRANSAUTO (z FOXPRO.H).
                  Východzia hodnota je 1. Spracovanie transakcie vo vzdialenej tabuľke je
                  riadené automaticky. 2 alebo DB_TRANSMANUAL (z FOXPRO.H).
                  Spracovanie transakcie je riadené ručne pomocou funkcií SQLCOMMIT()
                  a SQLROLLBACK( ).
                  Čítanie a zápis.
UserId           Identifikačný kód užívateľa.
                  Čítanie a zápis.
WaitTime          Doba v milisekundách, ktorá ubehne, než program Visual FOXPRO
                  skontroluje, či bolo dokončené vykonanie príkazu SQL. Východzia
                  hodnota je 100 milisekúnd.
                  Čítanie a zápis.
eVýraz
Určuje hodnotu, na ktorú má byť nastavený zadaný argument cNastavenie. Ak vynecháte argument eVýraz,
obnoví sa pre príslušné nastavenie východzia hodnota.
Vracia typy

Numeric

Poznámky

Ak je funkcia SQLSETPROP( ) úspešne vykonaná, vracia hodnotu 1. Ak sa vyskytne chyba na úrovni spojenia,
vracia hodnotu - 1, ak sa vyskytne chyba na úrovni prostredia, vracia hodnotu - 2.
Nastavenie na úrovni spojenia je možné určiť pomocou funkcie SQLSETPROP( ). Ak chcete určiť východzie
nastavenie programu Visual FOXPRO na úrovni prostredia, zadajte ako manipulátor spojenia hodnotu 0.
Nastavenie vlastnosti ConnectTimeOut je možné nastaviť len na úrovni programu Visual FOXPRO, na úrovni
spojenia neexistuje žiadny ekvivalent tohoto nastavenia. Všetky ostatné voľby môžete nastaviť na oboch
úrovniach. Voľby nastavené na úrovni programu Visual FOXPRO slúžia ako východzie hodnoty pre ďalšie
spojenie.
Aktuálnu hodnotu určeného nastavenia môžete vrátiť pomocou funkcie SQLGETPROP( ).

Príklad

* V uvedenom príklade je vyvolaná funkcia SQLCONNECT( ), hodnota vrátená touto funkciou je uložená do
* pamäťovej premennej s názvom gnConnHandle.

*   Vlastnosť BatchMode je nastavená pomocou funkcie SQLSETPROP( ) na logickú hodnotu false (.F.), je možné
*   teda načítať jednotlivé výsledné sady. Funkcia SQLMORERESULTS( ) je vyvolaná dvakrát, pretože je treba
*   vytvoriť dve kurzorové tabuľky obsahujúce výsledky dotazu funkcie SQLEXEC( ). Pomocou príkazu SET je
*   zobrazené okno pohľad a kurzorové tabuľky vytvorené pomocou funkcie SQLEXEC( ).

= SQLSETPROP(gnConnHandle, 'BatchMode', .F.) && Jednotlivé výsledné sady
= SQLEXEC(gnConnHandle, 'SELECT * FROM authors;
    SELECT * FROM titles') &&
= SQLMORERES(gnConnHandle) && Prvá výsledná sada
= SQLMORERES(gnConnHandle) && Druhá výsledná sada



SQLSTRINGCONNECT()
Vytvorí spojenie so zdrojom dát.

Syntax

SQLSTRINGCONNECT([cSpojovacíReťazec])

Argumenty

cSpojovacíReťazec

Určuje spojovací reťazec zdroja dát požadovaný niektorými ovládačmi ODBC. Program Visual FOXPRO predá
spojovací reťazec príslušnému ovládaču ODBC. Ďalšie informácie týkajúce sa spojovacích reťazcov zdroja dát
nájdete v dokumentácii k vášmu ovládaču ODBC.
Ak vyvoláte funkciu SQLSTRINGCONNECT( ) bez argumentu cSpojovacíReťazec, zobrazí sa dialógové okno
zdroja dát SQL, ktoré umožní zvoliť zdroj dát.

Vracia typy

Numeric

Poznámky

Ak nadviažete úspešne spojenie so zdrojom dát, vráti funkcia SQLSTRINGCONNECT( ) kladné nenulové číslo -
manipulátor. Tento manipulátor je treba uložiť do pamäťovej premennej a tú použiť pri každom nasledujúcom
volaní niektorej funkcie, ktorá vyžaduje informáciu o manipulátore spojenia.

Príklad

* V uvedenom príklade je k dispozícii zdroj dát ODBC s názvom MyFoxSQLNT, identifikačný kód užívateľa
zdroja
* dát je „sa" a heslo znie „FOXPRO". Je vyvolaná funkcia SQLSTRINGCONNECT( ) a hodnota vrátená touto
* funkciou je uložená do pamäťovej premennej s názvom gnConnHandle.

* Ak spojenie so zdrojom dát prebehne úspešne, vráti funkcia SQLSTRINGCONNECT( ) kladné číslo, zobrazí sa
* dialógové okno a pomocou funkcie SQLDISCONNECT( ) prebehne odpojenie od zdroja dát.

* Ak spojenie so zdrojom dát neprebehne úspešne, vráti funkcia SQLSTRINGCONNECT( ) záporné číslo a
* zobrazí sa chybová správa.

STORE SQLSTRINGCONNECT('dsn=MyFoxSQLNT;uid=sa;pwd=FOXPRO');
     TO gnConnHandle
IF gnConnHandle < 0
     = MESSAGEBOX('Spojenie nie je možné vykonať', 16, 'Chyba spojenia SQL')
ELSE
     = MESSAGEBOX('Spojenie bolo vykonané', 48, 'Správa o spojení SQL')
     = SQLDISCONNECT(gnConnHandle)
ENDIF



SQLTABLES()
Uloží názvy tabuliek v zdroji dát do kurzorovej tabuľky programu Visual FOXPRO.

Syntax

SQLTABLES(nManipulátorSpojenia [, cTypyTabuliek] [, cNázovKurzorovejTabuľky])

Argumenty

nManipulátorSpojenia

Určuje manipulátor spojenia so zdrojom dát vrátený funkciou SQLCONNECT( ).

cTypyTabuliek

Určuje jeden alebo niekoľko typov tabuliek. Platné typy tabuliek môžu byť TABLE, VIEW, SYSTEM TABLE alebo
akýkoľvek platný identifikátor typu tabuľky určujúci zdroj dát. Argument cTypyTabuliek musí byť napísaný
veľkými písmenami. Ak zadávate viac typov tabuliek, oddeľte jednotlivé typy čiarkami.
Ak vynecháte argument cTypyTabuliek alebo ak do tohoto argumentu zadáte prázdny reťazec, budú vybrané
všetky tabuľky v zdroji dát.
Zadaný typ tabuliek musí byť oddelený apostrofmi. V príklade je uvedený spôsob, ako zadať typy tabuliek
VIEW a SYSTEM TABLE ako reťazcový literál.

? SQLTABLES(handle, "'VIEW', 'SYSTEM TABLE'", "mydbresult")


cNázovKurzorovejTabuľky

Určuje názov pomocnej tabuľky, do ktorej bude poslaná výsledná sada. Ak nezadáte názov pomocnej tabuľky,
bude použitý východzí názov SQLRESULT.
V nasledujúcej tabuľke sú uvedené stĺpce v pomocnej tabuľke.

Názov stĺpca              Popis
TABLE_QUALIFIER           Identifikácia oprávneného pre tabuľky
TABLE_OWNER               Identifikácia vlastníka tabuľky
TABLE_NAME                Názov tabuľky zobrazený v slovníku dát
TABLE_TYPE                Typ tabuľky zobrazený v slovníku dát
REMARKS                   Popis tabuľky
Vracia typy

Numeric

Poznámky

Akonáhle je kurzorová tabuľka vytvorená, vracia funkcia SQLTABLES( ) hodnotu 1. Pokiaľ nie je vykonávanie
funkcie SQLTABLES( ) dokončené, bude vrátená hodnota 0. Ak sa vyskytne chyba na úrovni spojenia, vráti
funkcia hodnotu - 1, pri chybe na úrovni prostredia vráti funkcia hodnotu - 2.
Funkcia SQLTABLES( ) je jednou zo štyroch funkcií, ktoré môžu byť vykonané buď synchrónne, alebo
asynchrónne. Spôsob vykonania určuje hodnota nastavenia voľby Asynchronous vo funkcii SQLSETPROP( ). V
asynchrónnom režime musíte volať funkciu SQLTABLES( ) opakovane, pokiaľ nebude vrátená iná hodnota než 0
(znamenajúca, že vykonávanie funkcie nie je ešte dokončené).

Príklad

* V uvedenom príklade je k dispozícii zdroj dát ODBC s názvom MyFoxSQLNT, identifikačný kód užívateľa
zdroja
* dát je „sa". Je volaná funkcia SQLCONNECT( ) a hodnota vrátená touto funkciou je uložená do pamäťovej
* premennej nazvanej gnConnHandle.
*   Ak nie je spojenie so zdrojom dát nadviazané, vráti funkcia SQLCONNECT( ) záporné číslo a zobrazí sa
*   chybová správa.
*   Ak je nadviazané spojenie so zdrojom dát, vráti funkcia SQLCONNECT( ) kladné číslo a zobrazí sa dialógové
*   okno. Pomocou funkcie SQLTABLES( ) je vytvorená kurzorová tabuľka s názvom mycursor obsahujúca
*   informácie o tabuľkách v zdroji dát. Informácie o tabuľkách je možné zobraziť príkazom LIST.

STORE SQLCONNECT('MyFoxSQLNT', 'sa') TO gnConnHandle
IF gnConnHandle < 0
     = MESSAGEBOX('Spojenie nie je možné vykonať', 16, 'Chyba spojenia SQL')
ELSE
     = MESSAGEBOX('Spojenie bolo vykonané', 48, 'Správa o spojení SQL)
     STORE SQLTABLES(gnConnHandle, 'TABLES', 'mycursor') TO nTables
     IF nTables = 1
          SELECT Mycursor
          LIST
     ENDIF
ENDIF