602SQL-┌plnß dokumentace Index   Tisk  

P°φznaky kompatibility jazyka SQL

N∞kterΘ detaily implementace jazyka SQL a prßce SQL serveru lze nastavit pomocφ tzv. p°φznak∙ kompatibility. T²kß se to oblastφ, kterΘ nejsou v norm∞ jazyka SQL specifikovßny nebo kterΘ se ve starÜφch verzφch 602SQL chovaly odliÜn∞, ne₧ p°edepisujφ novΘ normy jazyka SQL. Aby byla zachovßna nezm∞n∞nß funkce starÜφch aplikacφ a p°itom aby bylo mo₧no vytvß°et novΘ aplikace v souladu s normami SQL, umo₧≥uje server 602SQL nastavit, do jakΘ mφry se mß zachovat kompatibilita funkce se starÜφmi verze proti striktnφmu dodr₧enφ norem.

Kup°φkladu pokud je p°i vytvß°enφ odpov∞di na dotaz po₧adovßna typovß konverze, kterou nelze provΘst, starÜφ verze 602SQL vracely hodnotu NULL, zatφmco dle normy mß celß operace skonΦit ne·sp∞chem.

Nastavenφ p°φznak∙ kompatibility lze libovoln∞ m∞nit i za b∞hu aplikace a pro r∙znΘ klienty mohou ve stejnΘm okam₧iku platit r∙znß nastavenφ. Zm∞nu nastavenφ provßdφ klient volßnφm API funkce Set_sql_option. Aktußlnφ nastavenφ vracφ funkce Get_sql_option. V prost°edφ SQL serveru lze aktußlnφ nastavenφ Φφst a m∞nit pomocφ systΘmovΘ prom∞nnΘ @@SQLOPTIONS.

Po p°ipojenφ se novΘho klienta na server jsou vÜechny jeho volby nastaveny dle vlastnosti serveru DefaultSQLOption. Pokud hodnota tΘto vlastnosti nenφ zm∞n∞na, je zapnuta ve vÜech volbßch kompatibilita se starÜφmi verzemi 602SQL. Interaktivnφ nastavovßnφ tΘto vlastnosti umo₧≥uje strßnka Parametry / Provoznφ parametry / Kompatibilita SQL na ╪φdicφ konzoli.

P°ehled p°φznak∙ kompatibility:
jmΘno volby hodn. Φeho se t²kß stav je-li nastaveno (WB syntax) stav nenφ-li nastaveno (SQL syntax)
SQLOPT_NULLEQNULL 1 porovnßnφ dvou hodnot NULL (*) v²sledek je TRUE v²sledek je UNKNOWN
SQLOPT_NULLCOMP 2 operace mezi NULL a jinou hodnotou (*) NULL je menÜφ v relacφch a je inertnφm prvkem v ostatnφch operacφch v²sledek relacφ je UNKNOWN, ostatnφch operacφ NULL
SQLOPT_RD_PRIVIL_VIOL 4 pou₧itφ hodnoty, k nφ₧ nenφ prßvo Φtenφ, p°i konstrukci kurzoru mφsto utajenΘ hodnoty se pou₧ije NULL dojde k chyb∞
SQLOPT_MASK_NUM_RANGE 8 p°eteΦenφ ΦφselnΘho rozsahu p°i konverzi v²sledkem je NULL dojde k chyb∞
SQLOPT_MASK_INV_CHAR 16 °et∞zec znak∙ nelze konvertovat na po₧adovan² typ v²sledkem je NULL dojde k chyb∞
SQLOPT_MASK_RIGHT_TRUNC 32 p°i typovΘ konverzi na typ °et∞zec dochßzφ ke ztrßt∞ znak∙ na pravΘm konci znaky jsou ztraceny dojde k chyb∞
SQLOPT_EXPLIC_FREE 64 zruÜenφ a uvoln∞nφ zßznamu zruÜenΘ zßznamy se uvol≥ujφ funkcφ Free_deleted zruÜenΘ zßznamy se uvol≥ujφ ihned po zruÜenφ
SQLOPT_OLD_ALTER_TABLE 128 syntaxe ALTER TABLE pou₧ije se p∙vodnφ varianta ALTER TABLE (stejnΘ jako nßvrhßr) pou₧φvß se varianta ALTER TABLE podle normy SQL
SQLOPT_DUPLIC_COLNAMES 256 kdy₧ se dva sloupce v odpov∞di na dotaz jmenujφ stejn∞ ponechajφ se stejnß jmΘna, lze je rozliÜit pomocφ prefixu sloupce se automaticky p°ejmenujφ
SQLOPT_USER_AS_SCHEMA 512 prefixovßnφ jmen tabulek jmΘnem u₧ivatele prefix se v₧dy pova₧uje za jmΘno schΘmatu pokud se prefix shoduje se jmΘnem p°ihlßÜenΘho u₧ivatele, ignoruje se
SQLOPT_DISABLE_SCALED 1024 v²skyt Φφseln²ch necel²ch p°esn²ch typ∙ v odpov∞di na dotaz (NUMERIC) pokud nelze pova₧ovat za typ Money, je automaticky konvertovßn na typ Real typ se zachovß
SQLOPT_ERROR_STOPS_TRANS 2048 reakce transakce na chybu transakce se ukonΦφ transakce pokraΦuje a₧ do commitu nebo rollbacku
SQLOPT_NO_REFINT_TRIGGERS 4096 spouÜt∞nφ trigger∙ p°i provßd∞nφ akcφ aktivnφ referenΦnφ integrity triggery se nespouÜt∞jφ triggery se spouÜt∞jφ
SQLOPT_USE_SYS_COLS 8192 v²b∞r i systΘmov²ch sloupcu (_W5_ ...) v klauzuli SELECT * vyberou se vÜechny sloupce vΦetn∞ systΘmov²ch systΘmovΘ sloupce se nevyberou
SQLOPT_CONSTRS_DEFERRED 16384 kdy se mß vyhodnocovat poruÜenφ t∞ch omezenφ tabulky (s v²jimkou UNIQUE), kterΘ nejsou nastaveny explicitn∞ chyba se projevφ p°i commitu (DEFERRED) chyba se projevφ okam₧it∞ (IMMEDIATE)
SQLOPT_COL_LIST_EQUAL 32768 kdy se provede UPDATE trigger se seznamem sloupcu je-li zm∞n∞na stejnß mno₧ina sloupcu pokud mno₧ina zm∞n∞n²ch sloupcu mß neprßzdn² pr∙nik se seznamem
SQLOPT_QUOTED_IDENT 65536 jak se interpretujφ uvozovky v SQL uvozovky vymezujφ °et∞zec znak∙, stejn∞ jako apostrof uvozovky vymezujφ identifikßtor, stejn∞ jako obrßcen² apostrof

(*) pro °et∞zce s hodnotou NULL (= prßzdnΘ °et∞zce) platφ bez ohledu na nastavenφ ·daje ze sloupce Syntax WB (porovnßnφ dvou NULL string∙ je TRUE apod.).

Obecn∞ platφ, ₧e je-li volba nastavena, zachovßvß se kompatibilita se starÜφmi verzemi 602SQL, nenφ-li nastavena, server se chovß dle norem SQL.