 Posledná zmena | 2003-04-29 09:41:24 | Počet zobrazení | 3436 | Hodnotenie | 27 / 16 | Príspevkov v diskusii | 0 |
|
AERROR() - pole informácií o poslednej chybe programu |
|
ALTER TABLE - SQL - zmena štruktúry tabuľky z programu |
|
CREATE CURSOR - SQL - vytvorenie dočasnej tabuľky |
|
CREATE TABLE - SQL - vytvorenie tabuľky z programu |
|
DELETE - SQL - označenie záznamu na odstránenie |
|
INSERT - SQL - vloženie nového záznamu |
|
SELECT - SQL - Načíta dáta z jednej alebo viacerých tabuliek. |
|
UPDATE - SQL - aktualizácia záznamov v tabuľke |
|
SQLCANCEL() - zrušenie vykonávaného príkazu SQL |
|
SQLCOLUMNS() - uloženie informácií o tabuľke do kurzorovej tabuľky |
|
SQLCOMMIT() - potvrdenie transakcie |
|
SQLCONNECT() - zriadenie spojenia so zdrojom dát |
|
SQLDISCONNECT() - ukončenie spojenia so zdrojom dát |
|
SQLEXEC() - odoslanie príkazu SQL ku zdroju dát na vykonanie |
|
SQLGETPROP() - aktuálne alebo východzie nastavenie pre aktívne spojenie |
|
SQLMORERESULTS() - kopíruje do pomocnej tabuľky programu VFP výslednú |
|
SQLROLLBACK() - zrušenie všetkých zmien vykonaných počas aktuálnej transakcie |
|
SQLSETPROP() - nastavenie aktívneho spojenia |
|
SQLSTRINGCONNECT() - vytvorenie spojenia so zdrojom dát |
|
SQLTABLES() - uloženie názvov tabuliek v zdroji dát do kurzorovej tabuľky programu VFP |
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
- Hodnota typu Numeric. Obsahuje číslo chyby. Je zhodná s hodnotou, ktorú vracia
funkcia ERROR( ).
- Hodnota typu Character. Obsahuje text chybového hlásenia. Je zhodná s hodnotou,
ktorú vracia funkcia MESSAGE( ).
- Hodnota null. Ak má však chyba dodatočný parameter, obsahuje text parametra
chyby. Je zhodná s hodnotou, ktorú vracia funkcia SYS(2018).
- Hodnota null. V niektorých prípadoch obsahuje číslo pracovnej oblasti,
v ktorej sa chyba vyskytla.
- Hodnota null. Ak však zlyhala spúšť (chyba 539), obsahuje jednu z týchto
číselných hodnôt:
- - Zlyhala spúšť na vkladanie
- - Zlyhala spúšť na aktualizáciu
- - Zlyhala spúšť na odstránenie
- Hodnota null.
- 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
- Hodnota typu Numeric. Obsahuje číslo 1427 alebo 1429.
- Hodnota typu Character. Obsahuje text chybového hlásenie programu Visual
FoxPro.
- Hodnota typu Character. Obsahuje text chybového hlásenie chyby mechanizmu OLE.
- Hodnota typu Character. Obsahuje názov aplikácie (napríklad Microsoft Excel).
- 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.
- 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.
- 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
- Hodnota typu Numeric. Obsahuje vzdialené číslo chyby.
- Hodnota typu Character. Obsahuje text vzdialeného chybového hlásenia.
- Hodnota typu Numeric. V prípade, že zlyhalo volanie SQL, obsahuje číslo
manipulátora spojenia.
- Hodnota null.
- Hodnota null.
- Hodnota null.
- 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
- Hodnota typu Numeric. Obsahuje číslo 1526.
- Hodnota typu Character. Obsahuje text chybového hlásenia.
- Hodnota typu Character. Obsahuje text chybového hlásenia chyby mechanizmu ODBC.
- Hodnota typu Character. Obsahuje aktuálny SQL stav mechanizmu ODBC.
- Hodnota typu Numeric. Obsahuje číslo chyby zo zdroja dát ODBC.
- Hodnota typu Numeric. Obsahuje manipulátor spojenia ODBC.
- 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 | Poletypu 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ázvymôž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(&
nbsp;), 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]
- 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.
[Alias.] Vybraná_Položka [AS Názov_Stĺpca]
[, [Alias.] Vybraná_Položka [AS Názov_Stĺpca] ...]
- 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 (&
quot;").
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( ).
= 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.
= 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
Naspäť |