Il blocco funzione FB_SqlDbRequest consente di:
Stabilire una connessione TCP permanente e protetta o non protetta con SQL Gateway. Per ulteriori informazioni, consultare ST_ExtendedConnectionSettings.
Eseguire 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.
Eseguire 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.
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. For more information, also refer to Behavior of Function Blocks with the Inputs i_xEnable and i_xExecute and 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. For more information, also refer to Behavior of Function Blocks with the Inputs i_xEnable and i_xExecute and i_xErrorQuit. |
i_xErrorQuit |
BOOL |
Il blocco funzione conferma un errore rilevato indicato da q_xError su un fronte di salita di questo ingresso. For more information, also refer to Behavior of Function Blocks with the Inputs i_xEnable and i_xExecute and 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 suddivisa in singole stringhe di lunghezza max. di 200 caratteri ciascuna. 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 memorizzare i dati SQL letti dal database. |
In_Out |
Tipo di dati |
Descrizione |
---|---|---|
iq_stExtendedConnSettings |
ST_ExtendedConnectionSettings |
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.
Nel controller deve essere presente un ARRAY bidimensionale per la memorizzazione intermedia dei dati SQL letti dal database. L'ARRAY bidimensionale è definito in 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.