Define_table

Internφ programovacφ jazykC/C++Pascal

function Define_table(var name, description : string) : Boolean;
BOOL Define_table(const char * name, const char * description);
function Define_table(name, description : PChar) : Boolean;

Parametry

name jmΘno pro novou tabulku
description popis struktury a index∙ tabulky

Popis

Funkce je od verze 5.0 zastaralß a nedoporuΦuje se jφ pou₧φvat. Tabulku lze nynφ vytvo°it p°φm²m zavolßnφm SQL p°φkazu CREATE TABLE. Funkce Define_table existuje z d∙vod∙ zp∞tnΘ kompatibility.

Funkce Define_table vytvß°φ novou prßzdnou tabulku se jmΘnem name. Tabulka stejnΘho jmΘna nesmφ ji₧ v aktußlnφ aplikaci existovat.

Popis struktury tabulky description musφ p°esn∞ dodr₧et nφ₧e popsanou syntaxi, jinak tabulka nebude vytvo°ena.

Popis m∙₧e zaΦφnat voliteln²m slovem NO_JOURNAL. Dßle nßsleduje po °ad∞ 1 a₧ 254 popis∙ sloupc∙, 0 a₧ 24 popis∙ index∙ a ukonΦujφcφ slovo END. Slovo NO_JOURNAL vyjad°uje po₧adavek, aby se zm∞ny v tabulce nezaznamenßvaly do journalu (pokud se journal vede).

Popis ka₧dΘho sloupce vypadß takto:

ATTRIBUTE jmΘno typ[parametr] PREALLOC=nn EXPANDABLE

p°iΦem₧:

jmΘno - je jmΘno sloupce, tedy identifikßtor o dΘlce max. 31 znak;

typ - je typ sloupce;

parametr - a hranatΘ zßvorky okolo n∞j se uvßd∞jφ pouze u typu String (v zßvorkßch je pak dΘlka °et∞zce) a u typ∙ Pointer a Biptr (v zßvorkßch je jmΘno cφlovΘ tabulky);

PREALLOC=nn - se uvßdφ pouze u multiatribut∙, nn je poΦet hodnot multiatributu, pro n∞₧ je staticky rezervovßno mφsto, nn musφ b²t mezi 0 a 127;

EXPANDABLE - lze uvΘst pouze u multiatribut∙ a specifikuje, ₧e multiatribut smφ mφt i dalÜφ hodnoty, pro n∞₧ nenφ staticky rezervovßno mφsto.

Popis ka₧dΘho indexu vypadß takto:

INDEX [!] v²raz sm∞r, ... v²raz sm∞r

p°iΦem₧:

! - je-li uveden, index se vytvo°φ jako jedineΦn²;

v²raz - v²raz definujφcφ obecn² index, m∙₧e obsahovat a₧ 8 atribut∙; za jmΘnem sloupce typu °et∞zec znak∙ smφ b²t v hranat²ch zßvorkßch uvedeno, kolik znak∙ ze zaΦßtku °et∞zce se mß zahrnout do klφΦe;

sm∞r - m∙₧e b²t ASC pro vzestupn∞ uspo°ßdanΘ indexy nebo DESC pro sestupn∞ uspo°ßdanΘ indexy, pokud se neuvede, mφnφ se vzestupnΘ uspo°ßdßnφ.

P°i vytvß°enφ tabulky lze specifikovat, ₧e zm∞ny v tΘto tabulce se nemajφ zaznamenßvat do journalu. Na zaΦßtek definice takovΘto tabulky umφstφte slovo NO_JOURNAL. V nßvrhß°i tabulek tuto vlastnost zadat nelze.

P°φklad:

Define_table("NOV┴", "NO_JOURNAL  ATTRIBUTE a INDEX a END");

Hodnota funkce

Funkce vracφ FALSE, pokud tabulku vytvo°φ, nebo TRUE, pokud tabulku nem∙₧e vytvo°it (obvykle kv∙li chybnΘmu popisu struktury, nebo pokud tabulka tohoto jmΘna ji₧ existuje).

P°φklad

star² a nov² zp∙sob definice tabulky:

result := Define_table('NovaTab',
 'attribute i short '
 'attribute j short '
 'attribute n csstring[30] '
 'attribute r real prealloc=5 expandable '
 'attribute t text '
 'attribute p pointer[StaraTab] '
 'index n[10], i '
 'index i+j desc end');

SQL_execute('CREATE TABLE NovaTab ('
'i INTEGER INDEX,'
'j INTEGER,'
'n CHAR(30) COLLATE CSSISTRING,'
'r REAL PREALLOC=5 EXPANDABLE,'
't TEXT LONG VARCHAR,'
'p POINTER [StaraTab],'
'INDEX (n[10]),'
'INDEX (i+j DESC))')

Viz