Scripts SQL
Gli scripts SQL
Gli scripts SQL sono degli scripts di
interrogazione dotati della possibilità di eseguire istruzioni SQL.
Servono per costruire delle maschere di inserimento dati in base ad esigenze
specifiche del cliente.
A fronte dei dati inseriti dall'utente nella maschera generata attraverso lo script, è possibile eseguire uno o più comandi SQL per inserire dati nel database (o fare qualunque altro tipo di operazione).
PARTICOLARITA'
E' possibile inserire variabili definite nello scripts
all'interno della sintassi del comando SQL purché precedute dal segno $.
Ad esempio: ammettendo che nello script siano definite le variabili
CODICE e DESCR, il comando SQL potrebbe essere:
INSERT INTO aaa (AAA_str_codice, AAA_str_descrizione) VALUES ('$CODICE', '$DESCR');
MACRO LOCALI
Nella finestra di ciascuno dei comandi SQL è possibile definire un insieme di macro
aggiuntive che hanno valore esclusivamente locale. E' comunque sempre possibile
utilizzare le macro definite direttamente sullo script principale.
STRUTTURE CONDIZIONALI E DI
CONTROLLO
All'interno delle istruzioni SQL è possibile utilizzare le seguenti istruzioni
condizionali e di salto.
| ISTRUZIONE | ESEMPI | COMMENTO |
/IF (predicato) [/THEN] istruzione1 [/ELSE istruzione2] |
|
|
| :etichetta | :pippo :qui :fine |
definisce una posizione di salto; etichetta non può essere più lunga di 32 caratteri |
/GOTO etichetta |
/GOTO pippo /GOTO qui /GOTO fine |
il flusso si sposta all'etichetta specificata; sono ammessi esclusivamente salti in avanti |
HETEROGENEOUS QUERIES
- E' possibile eseguire heterogeneous queries, ovvero queries
riguardanti più databases (e non solo quello standard di jolly) utilizzando
l'apposita sintassi BDE qui esemplificata:
SELECT * FROM ":DB1:table1" JOIN ":DB2:table2" ON (....) WHERE table1.xxx = table2.yyy .... - L'istruzione SQL è comunque racchiusa all'interno di una transazione, gestita automaticamente da JOLLY. In caso di heterogeneous query, per utilizzare la connessione database di JOLLY (quella che gestisce la transazione) è possibile utilizzare il databasename $DBJ; ad esempio: SELECT * FROM ":$DBJ:table1" ....
- In caso di heterogeneous query è possibile che la transazione sia chiusa automaticamente dal database (meglio: dal BDE) perché incapace di gestirla. La connessione resta comunque valida e persistente, anche se la transazione ovviamente non fornisce le tradizionali garanzie.
- Le heterogeneous queries sono eseguite previa interpretazione del
BDE, ovvero in modalità LOCAL SQL.
Per questo motivo tutte le estensioni proprietarie dei databases su cui si lavora saranno sostanzialmente inutilizzabili. Questo fatto può dare luogo a errori imprevedibili e poco comprensibili anche in istruzioni apparentemente banali. - Per eseguire la connessione automatica ad una sorgente dati esterna è possibile inserire le credenziali di accesso nella linguetta delle SORGENTI DATI ESTERNE.
Per eseguire automaticamente la connessione alle sorgenti dati esterne
utilizzate nelle heterogeneous queries è possibile specificare i
parametri di connessione nella apposita linguetta.
Il nome della sorgente dati esterna deve essere lo stesso utilizzato nella heterogeneous query;
se la query è ad esempio: SELECT
* FROM ":DB1:table1" .... il nome della sorgente dati
esterna è DB1 .
Il formato dei parametri varia in base alla sorgente dati cui ci si desidera
collegare. Per SQL Server, ad esempio, i parametri potrebbero essere:
USER NAME=federico
PASSWORD=abracadabra
NB: le credenziali di accesso ad una sorgente dati esterna sono dati
estremamente riservati. Per evitare che se ne possa abusare Jolly le salva in
formato cryptato, come pure in formato cryptato salva le queries
SQL che vengono eseguite utilizzando i diritti ad esse associati (per evitare
che possano essere modificate in modo non controllato).
E' tuttavia opportuno accertarsi di aver preso tutte le precauzioni necessarie
perché non sia possibile un loro utilizzo improprio (ad esempio: utilizzare accounts
di accesso limitati alle tabelle su cui si desidera lavorare).
REGISTRO DELLE OPERAZIONI ESEGUITE
Il programma registra un record sulla table scripts_SQL_registro
per ogni record generato attraverso gli
scripts SQL.