SQL príkazy vo FoxPro

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

  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ľanŠírkaPoľanPresnosťPopis
Cn-Pole typu Character o šírke n
D--Pole typu Date
T--Pole typu DateTime
NndPole typu Numeric o šírke n, ktoré má d desatinných miest
FndPole typu Numeric Floating o šírke n majúci d desatinných miest
I--Pole typu Integer
B-dPole 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ľanŠírkaPoľanPresnosťPopis
Cn-Pole typu Character o šírke n
D--Pole typu Date
T--Pole typu DateTime
NndPoletypu Numeric o šírke n majúci d desatinných miest
FndPole typu Numeric Floating o šírke n majúci d desatinných miest
I--Pole typu Integer
B-dPole 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ľanŠírkaPoľanPresnosťPopis
Cn-Pole typu Character o šírke n
D--Pole typu Date
T--Pole typu DateTime
NndPole typu Numeric o šírke n majúci d desatinných miest
FndPole typu Numeric Floating o šírke n majúci d desatinných miest
I--Pole typu Integer
B-dPole 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átorPorovnanie
=Rovná sa
==Je totožné
LIKESQL 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ĺpcaPopis
Field_nameNázov stĺpca
Field_typeDátový typ v stĺpci
Field_lenDĺžka stĺpca
Field_decPoč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ĺpcaPopis
Table_qualifierIdentifikácia oprávneného pre tabuľky
Table_ownerIdentifikácia vlastníka tabuľky
Table_nameIdentifikácia tabuľky
Column_nameIdentifikácia stĺpca
Data_typeDátový typ v stĺpci
Type_nameNázov dátového typu v stĺpci
PrecisionPresnosť stĺpca
LengthVeľkosť prenášaných dát
ScaleMerítko stĺpca
RadixBáza pre dáta typu Numeric
NullablePodpora hodnôt null
RemarksPopis 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ĺpcaPopis
TABLE_QUALIFIERIdentifikácia oprávneného pre tabuľky
TABLE_OWNERIdentifikácia vlastníka tabuľky
TABLE_NAMENázov tabuľky zobrazený v slovníku dát
TABLE_TYPETyp tabuľky zobrazený v slovníku dát
REMARKSPopis 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äť


Hodnotenie

Tento článok môžeš aj ohodnotiť:
[0]   [1]   [2]   [3]   [4]   [5]

Pozor!!! Toto je bodové hodnotenie a nie známkovanie. Číslo nie je známka, ale počet bodov. Čiže čím viac bodov, tým lepší sa ti zdal tento článok (0 = pôvodca všetkého zla vo vesmíre, 1 = totálny shit ... 5 = článok, pre ktorý sa oplatí žiť [zomrieť]).


Diskusia

Tento článok má povolenú aj diskusiu. Počet príspevkov v diskusii je 0. Vstúp do diskusie aj ty.


Príbuzné články

Príbuzné články:
- v tejto kategórii nie sú zatiaľ žiadne iné články