Download pdf

Transcript
SPRIX
Con lettere accentate in nomi tabella, controllare l'interpretazione da par te di CHR$(), se errata causa errore di esecuzione
dello statement SQL.
La virgola separatore di decimali, nelle query di scrittura numerica in SQL è rappresentata dal punto (con la virgola come
separatore di campi): la seguente query di inserimento in tabella del valore 2,5 nel Campo1 e del valore 1 nel Campo2 (
INSERT INTO Tabella(Campo1,Campo2) VALUES (2,5,1) ) rilascerebbe un errore di " [Microsoft][Driver ODBC Microsoft
Access] Il numero dei valori nella query non corrisponde a quello dei campi di destinazione ".
Occorre pertanto trasformare il separatore da virgola a punto. Access invece riconosce il campo numerico e converte la stringa
in numero, esempio, dichiarata la variabile da trattare (per la virgola) NUM$="45,6" richiede stringa STR_SQL5$="INSERT
INTO PrzArt(Articolo,Prezzo) VALUES('Pippò,'"+NUM$+"')"
Per il parametro di condizione LIKE, diversamente da Access (che usa MSJET) in ambiente ODBC (standard ANSI) i
caratteri jolly "*" e "?" vanno rappresentati da "%" e da "_". Query su Foglio di calcolo Excel: essendo la prima riga di Excel
un'intestazione di colonna il cui contenuto è il nome della variabile inseribile all'interno della SELECT, per definire la tabella
di riferimento (FROM), utilizzare la notazione CHR$(96)+NomeFoglio$+CHR$(96).
SQL_DISCONNECT
SQL_DISCONNECT <nc>
In Sprix/Collage chiude il numero connessione <nc> ed è obbligatoria; se è aperta una transazione associata questa viene
chiusa con una ROLLBACK.
Esempio
SQL_DISCONNECT 1 : GOSUB GEST_ERR_SQL
END
SQL_EXECUTE
SQL_EXECUTE <nc>,<ns>
In Sprix/Collage, nel numero connessione <nc> e di statement <ns> esegue uno statement "preparato".
Esempio
SQL_EXECUTE 1,1 : GOSUB GEST_ERR_SQL
SQL_EXEDIRECT
SQL_EXECDIRECT <nc>,<ns>,<str1$>[,str2$].....
In Sprix/Collage, nel numero connessione <nc> e di statement <ns> esegue l'istruzione SQL di <str1$>[,str2$]...(stringa o
stringhe SQL). Non sempre è consentita (es. con accesso via pxjdbc.jar) una isolata SQL_EXECDIRECT, perchè viene
richiesta SQL_PREPARE + SQL_EXECUTE (l'applicazione può scegliere di eseguire direttamente l'istruzione contenuta nella
variabile oppure preparare la variabile per poi eseguirla).
Esempio
SQL_EXECDIRECT 1,1,STR_SQL$ :
SQL_FREESTMT
SQL_FREESTMT <nc>,<ns>
In Sprix/Collage, nel numero connessione <nc> chiude l'eventuale cursore aperto associato al numero di statement <ns>, scarta
i risultati pendenti e libera tutte le risorse associate allo statement.
Esempio
FINE_CONN:
SQL_FREESTMT 1,1 : GOSUB GEST_ERR_SQL
SQL_FETCH
SQL_FETCH <nc>,<ns>
In Sprix/Collage, nel numero connessione <nc> e di statement <ns> legge una riga dal result set; per leggerle tutte in sequenza
dal primo record del recordset fino all'ultimo, occorre invocarla tante volte per il num. di righe.
Viene ritornato un valore per ciascuna colonna invocata da SQL_BINDCOL per leggere le informazioni in SELECT/INTERT.
La SQL_FETCH imposta _ERRSQL_NDF che indica il fine dati nel cursore (termine del recordset). Ha valore 0 (false = righe
non terminate) o 1 (true = lettura terminata).
Esempio
MANUALE SPRIX/COLLAGE  115