Tipo: |
Blocco funzione |
Disponibile a partire da: |
V2.0.0.0 |
Il blocco funzione FB_SqlDbRequest consente di:
oStabilire una connessione TCP permanente e sicura (non sicura) con SQL Gateway. Per maggiori informazioni, fare riferimento a ST_ExtendedConnectionSettings.
oEsegue le richieste SQL che leggono i dati dal database SQL. I dati restituiti sono forniti in un array bidimensionale di dati le cui dimensioni sono definite con i parametri globali.
oEsegue le richieste SQL che aggiornano o modificano il database SQL. Le richieste non restituiscono dati.
Dopo aver abilitato il blocco funzione (i_xEnable è impostato a TRUE), viene stabilita una connessione TCP (protetta tramite TLS V1.2 o non protetta) a SQL Gateway mediante le impostazioni definite nella variabile iq_stExtendedConnSettings.
Non appena viene stabilita la connessione , l'uscita q_xReady viene impostata a TRUE e il blocco funzione è in grado di inviare richieste SQL a SQL Gateway, che le inoltra al database SQL configurato tramite il nome della connessione.
Dopo aver rilevato un fronte di salita su i_xExecute, il blocco funzione invia la richiesta SQL a SQL Gateway ed elabora la risposta.
I messaggi di stato e le informazioni di diagnostica vengono forniti tramite le uscite q_xError (TRUE se è stato rilevato un errore), q_etResult e q_etResultMsg.
I messaggi di diagnostica in caso di esecuzione non riuscita di un comando possono essere riconosciuti impostando l'ingresso i_xErrorQuit a TRUE. Il blocco funzione rimane attivo e la connessione TCP non viene chiusa.
Dopo il completamento dello scambio dei dati con il database SQL, disabilitare il blocco funzione. Impostare i_xEnable a FALSE per chiudere la connessione.
NOTA: Il supporto di una connessione che utilizza TLS dipende dal controller dove si usa il FB_SqlDbRequest. Consultare il manuale specifico del controller per verificare se è supportata la comunicazione TCP tramite TLS.
Ingresso |
Tipo di dati |
Descrizione |
---|---|---|
i_xEnable |
BOOL |
Il blocco funzione stabilisce una connessione con SQL Gateway su un fronte di salita di questo ingresso. Se l'ingresso è impostato a FALSE, il blocco funzione viene reimpostato e viene chiusa una connessione esistente, oppure viene interrotto il tentativo di stabilire una connessione. Per ulteriori informazioni, consultare inoltre Comportamento dei blocchi funzione con l'ingresso i_xEnable e i_xExecute e i_xErrorQuit. |
i_xExecute |
BOOL |
Il blocco funzione esegue una richiesta SQL per la lettura o la scrittura dei dati dal o nel database SQL in corrispondenza del fronte di salita di questo ingresso. Per ulteriori informazioni, consultare inoltre Comportamento dei blocchi funzione con l'ingresso i_xEnable e i_xExecute e i_xErrorQuit. |
i_xErrorQuit |
BOOL |
Il blocco funzione conferma un errore rilevato indicato da q_xError su un fronte di salita di questo ingresso. Per ulteriori informazioni, consultare inoltre Comportamento dei blocchi funzione con l'ingresso i_xEnable e i_xExecute e i_xErrorQuit. |
i_etSqlRequest |
Definisce quale tipo di richiesta SQL (lettura o scrittura) deve essere eseguita. Valore predefinito: ET_SqlRequest.Read |
|
i_refRequestWstring |
REFERENCE TO [RequestWstring] |
Riferimento ai dati della richiesta che contengono una richiesta di query SQL (per lettura o scrittura). Qualsiasi richiesta SQL deve essere divisa in singole stringhe, ciascuna delle quali può avere una lunghezza max. di 200 caratteri. Adattare le dimensioni dei parametri globali Gc_uiMaxRequest e Gc_uiRequestWstringLength in funzione della lunghezza delle richieste SQL utilizzate nell'applicazione. NOTA: Per concatenare WSTRINGS, usare la funzione WCONCAT della libreria Standard64. |
i_uiNumOfWstrings |
UINT |
Il numero di WSTRINGS necessari che contengono la richiesta SQL suddivisa. Il numero max. è limitato dal parametro globale Gc_uiMaxRequest. |
i_refUserData |
REFERENCE TO [UserData] |
Fare riferimento ai UserData che devono essere disponibili sul controller per la memorizzazione dei dati SQL letti dal database. |
In_Out |
Tipo di dati |
Descrizione |
---|---|---|
iq_stExtendedConnSettings |
Contiene le informazioni per la connessione a un SQL Gateway. |
Uscita |
Tipo di dati |
Descrizione |
---|---|---|
q_xActive |
BOOL |
Indica che è attiva l'esecuzione del blocco funzione. Finché questa uscita è TRUE, il blocco funzione deve essere eseguito ciclicamente. |
q_xReady |
BOOL |
Indica che l'inizializzazione è riuscita e che la connessione TCP è stabilita. Questa uscita segnala TRUE finché il blocco funzione è in grado di accettare segnali in ingresso. |
q_xBusy |
BOOL |
Se questa uscita è impostata a TRUE, l'esecuzione del blocco funzione è in corso. |
q_xDone |
BOOL |
Se questa uscita è impostata a TRUE, l'esecuzione è stata completata correttamente. |
q_xError |
BOOL |
Se questa uscita è impostata su TRUE, è stato rilevato un errore. Per informazioni, consultare q_etResult e q_etResultMsg. |
q_etResult |
ET_Result |
Fornisce informazioni di stato e di diagnostica. |
q_sResultMsg |
STRING[255] |
Fornisce ulteriori informazioni di stato e di diagnostica. |
q_uiRetNumOfRows |
UINT |
Numero di righe nei dati restituiti. Questa uscita viene aggiornata con il numero di record ricevuti dal database SQL. NOTA: Valido solo dopo una richiesta di lettura riuscita. |
q_uiRetNumOfColumns |
UINT |
Numero di colonne nei dati restituiti. Questa uscita viene aggiornata con il numero di record ricevuti dal database SQL. NOTA: Valido solo dopo una richiesta di lettura riuscita. |
Per ulteriori informazioni, consultare inoltre Ingressi e uscite comuni.
Definizione di un ARRAY di dati utente
Nel controller deve essere presente un ARRAY bidimensionale per la memorizzazione intermedia dei dati SQL letti dal database. L'ARRAY bidimensionale è definito nell'ALIAS UserData.
Le dimensioni dell'ARRAY possono essere adattate tramite i parametri globali Gc_uiMaxRows, Gc_uiMaxColumns e Gc_uiTableWstringLength.
Quando si configurano questi parametri, considerare la quantità di dati SQL che si prevede di ricevere. Prima dell'avvio del trasferimento dati, i dati SQL vengono segmentati in funzione delle dimensioni di questo buffer.
Se i dati SQL ricevuti superano le dimensioni dell'ARRAY, il trasferimento dei dati SQL viene interrotto e il blocco funzione segnala un errore.
NOTA: Anche se l'applicazione esegue solo richieste di scrittura, al blocco funzione deve essere collegato un array bidimensionale valido. In caso contrario, si verifica un problema di compilazione.