FB_SqlDbRequest

Panoramica

Tipo:

Blocco funzione

Disponibile a partire da:

V2.0.0.0

Task

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.

Descrizione funzionale

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.

Interfaccia

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

ET_SqlRequest

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.

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 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.

NOTA: Anche se l'applicazione esegue solo richieste di scrittura, al blocco funzione deve essere collegato un array bidimensionale valido. In caso contrario, viene rilevato un errore di compilazione.