Parametry
statement | p°φkaz jazyka SQL |
results | pole Φφsel, do nich₧ se zapφÜe informace o v²sledku operace; pole musφ mφt svou prvnφ slo₧ku p°ed zavolßnφm inicializovanou hodnotou nula |
[cdp | kontextovß prom∞nnß klienta] |
Od verze:
5.0, ·prava ve verzi 8.0
Popis
Funkce vykonß p°φkaz jazyka SQL zadan² v parametru statement. P°i p°ekladu volßnφ tΘto funkce se nekontroluje smysluplnost SQL p°φkazu - p°φpadnß syntaktickß chyba p°φkazu se projevφ a₧ p°i b∞hu, kdy SQL server ohlßsφ, ₧e nem∙₧e splnit po₧adavek.
POZOR! Funkce mß t°i r∙znΘ syntaxe pro r∙znß prost°edφ!
V parametru statement m∙₧e b²t vφce SQL p°φkaz∙ odd∞len²ch st°ednφkem. P°i volßnφ z klientskΘho jazyka smφ b²t v parametru statement max. 12 SQL p°φkaz∙. Na rozdφl od volßnφ funkce z externφho jazyka nesmφ b²t ve statement pou₧it (ve smyslu p°φkazu) dotazov² v²raz SELECT - (dotaz se v klientskΘm jazyku otevφrß pomocφ funkce Open_sql_cursor
).
P°i volßnφ funkce z vn∞jÜφho (externφho) jazyka je nutnΘ uvΘst v²stupnφ parametr results. Tφmto parametrem je pole 32-bitov²ch cel²ch Φφsel bez znamΘnka. Pole musφ obsahovat nejmΘn∞ tolik slo₧ek, kolik p°φkaz∙ jazyka SQL je zadßno v parametru statement, maximßln∞ vÜak 10. Volßnφ procedury se nebere jako jeden p°φkaz, ale uva₧ujφ se jednotlivΘ p°φkazy v nφ obsa₧enΘ. Pole musφ mφt svou prvnφ slo₧ku p°ed zavolßnφm inicializovanou hodnotou nula. Parametr results slou₧φ k zφskßnφ informacφ o v²sledku provßd∞nφ p°φkaz∙. Mß relevantnφ hodnotu pouze v p°φpad∞, ₧e funkce SQL_execute
skonΦila ·sp∞Ün∞. Pokud byl proveden p°φkaz UPDATE, DELETE nebo INSERT, hodnotou p°φsluÜnΘho prvku pole je poΦet zpracovan²ch zßznam∙. Pokud byl proveden SELECT (nenφ SQL p°φkaz, lze ho vÜak zde pou₧φt pro otev°enφ dotazu), pak ve spodnφch dvou bajtech prvku pole je Φφslo otev°enΘho kurzoru a s otev°en²m kurzorem je mo₧nΘ dßle pracovat (stejn∞ jako by byl otev°en pomocφ funkce Open_cursor_direct
). Otev°en² kurzor se zavφrß pomocφ funkce Close_cursor
.
Hodnota funkce
Klientskß funkce vracφ hodnotu FALSE, pokud se akci poda°ilo ·sp∞Ün∞ provΘst. V opaΦnΘm p°φpad∞ vracφ TRUE a povahu chyby lze zjistit volßnφm funkce Signalize
.
P°i pou₧itφ tΘto funkce v jazyce SQL se vracφ bu∩ Φφslo kompilaΦnφ chyby, pokud p°φkazy p°edanΘ jako parametr nelze p°elo₧it, nebo 0, pokud bylo provedenφ p°φkaz∙ ·sp∞ÜnΘ - viz DynamickΘ SQL p°φkazy uvnit° ulo₧en²ch procedur.
P°φklad v klientskΘm jazyce
sqlstr := "DELETE FROM Rtab WHERE metoda="+Int2str(id_metody);
if SQL_execute(sqlstr) then Signalize;
sqlstr := "DELETE FROM Rtab_header WHERE metoda="+Int2str(id_metody);
if SQL_execute(sqlstr) then Signalize;
P°φklad v SQL:
m∙₧e-li dojφt ke kompilaΦnφ chyb∞, je t°eba ji oÜet°it v k≤du (nelze zachytit handlerem):
SET tabname="neex_tab" ; SET pomstr="INSERT INTO "||tabname||" DEFAULT VALUES"; SET err=SQL_execute(pomstr); IF err=1069 THEN
CALL Log_write("kompilaΦnφ chy
ba: tabulka >"|| tabname||"< neexistuje!!"); ELSEIF err>0 THEN
CALL Log_write("kompilaΦnφ chyba:"||Int2str(err));
ELSE ...
Viz