Prom∞nnΘ klientsk²ch aplikacφ v p°φkazech SQL

P°i komunikaci mezi klientem s SQL serverem lze vyu₧φt takΘ prom∞nn²ch, kterΘ jsou deklarovßny v klientskΘ aplikaci a zßrove≥ jsou pou₧itelnΘ v p°φkazech jazyka SQL a p°φstupnΘ pro SQL server. Tyto prom∞nnΘ mohou slou₧it nap°φklad pro zadßnφ hodnot zapisovan²ch do databßze, pro urΦenφ vyhledßvacφch kritΘriφ nebo pro zφskßnφ v²sledku dotazu Φi funkce z SQL serveru. Takto lze zapsat p°φkazy, jejich₧ obsah se bude m∞nit se zm∞nami hodnot prom∞nn²ch klienta.

T∞mto prom∞nn²m se obvykle °φkß embedded variables nebo host variables. Jejich vyu₧itφ je podmφn∞no tφm, ₧e SQL p°φkazy na n∞ vhodn²m zp∙sobem odkazujφ a klientskß aplikace je serveru zp°φstupnφ - viz dßle.

P°ed ka₧dou takovou prom∞nnou s identifikßtorem id je nutno uvΘst v SQL p°φkazu dvojteΦku. Navφc je mo₧no p°idat oznaΦenφ, zda jde o p°enos hodnoty od klienta na server, ze serveru klientovi nebo ob∞ma sm∞ry. Toto oznaΦenφ zefektivnφ p°enosy dat mezi klientem a serverem a tφm zrychlφ prßci. Prom∞nnß se tedy zapφÜe takto:

P°φklady pou₧itφ:

V nφ₧e uveden²ch p°φkladech se vyu₧φvajφ prom∞nnΘ OS_CISLO, PRIDAT, PL, JMENO a D_OBLAST1 deklarovanΘ ve vnit°nφm programovacφm jazyce WinBase602.

P°φkaz UPDATE na vybranΘm zßznamu:

OS_CISLO := 1294;
PRIDAT := 500;
SQL_execute('UPDATE Zamestnanci SET plat=plat+:<PRIDAT WHERE os_cis:<OS_CISLO');

╚tenφ hodnoty sloupce PLAT z vybranΘho zßznamu do prom∞nnΘ PL:

OS_CISLO := 1294;
SQL_execute('SELECT plat INTO :>PL FROM Zamestnanci WHERE os_cis:<OS_CISLO');

Vlo₧enφ novΘho zßznamu:

OS_CISLO := 1294;
PL := 12000;
JMENO := 'NOVAK';
SQL_execute(
'INSERT INTO Zamestnanci(os_cis,plat,jmeno) VALUES(:PL,:OS_CISLO,:JMENO)');

Volßnφ procedury:

OS_CISLO := 1294;
SQL_execute('CALL JMENO_SEFA(:<OS_CISLO,:>SEF)');

Volßnφ funkce:

OS_CISLO := 1294;
SQL_execute('SET :>MAX_PLAT = MAXIM_PLAT(:<OS_CISLO)');

P°φklad dynamickΘho dotazu (v Φßsti WHERE se vyu₧φvß hodnoty globßlnφ prom∞nnΘ D_OBLAST1), dotaz slou₧φ jako zdroj pro combo, jeho₧ obsah se m∞nφ podle toho, jakΘ p°edchozφ akce u₧ivatel provede:

SELECT Oblasti2.jmeno,Oblasti2.kod
FROM Oblasti2
WHERE SUBSTRING(CAST(kod AS CHAR(2)) FROM 1 FOR 1) = CAST(:D_OBLAST1 AS CHAR(1))

Viz

Prom∞nnΘ vnit°nφho jazyka v p°φkazech SQL, Prom∞nnΘ z externφch jazyk∙ v p°φkazech SQL