DEFAPPLOCK
La specifica è disponibile slo per le applicazioni che utilizzano SQLServer.
Consente di gestire un lock applicativo su un programma.
In questo modo altri programmi avviati contemporaneamente possono capire se chi ha impostato il lock è ancora vivo e operante.
Un esempio è quando si vuole avere l'accesso esclusivo ad una procedura.
La sequenza di funzionamento è la seguente:
- Tentativo di lock basato sul NOME.
- Se il lock è acquisito viene eseguita la callback GESTIONEDATI. Al cui termina rilascia il lock.
- Se il lock è stati già acquisito viene eseguita la callback GESTIONEERRORE.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| NOME | Stringa | ||||
| GESTIONEDATI | Azione | ||||
| GESTIONEERRORE | Azione | ||||
| MODO | Intero | ||||
| TIPO | Intero | ||||
| TIMEOUT | Intero |
GESTIONEDATI
Callback eseguita in caso sia stato acquisito il lock.
GESTIONEERRORE
Callback eseguita in caso il lock sia stato acquisito da un altro programma.
MODO
Modalità di gestione del lock.
Può avere i seguenti valori:
| Valore | Descrizione |
|---|---|
| 0 | Esclusivo. |
| 1 | Condiviso. |
Il funzionamento è il seguente:
- Si può acquisire un lock condiviso se non c'è un programma che ha acquisito il lock in modalità esclusiva.
- Si può acquisire un lock esclusivo se non c'è nessun lock condiviso o esclusivo.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Esclusivo |
1 | Condiviso |
TIPO
Distingue la durata del lock.
| Valore | Descrizione |
|---|---|
| 0 | Sessione (connessione al db). |
| 1 | Transazione. |
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Sessione (connessione al DB) |
1 | Transazione |
TIMEOUT
Indica il tempo di attesa se il lock risulta occupato.
Il tempo è in millesecondi.
Il valore 0 specifica di non attendere che il lock sia acquisito.
Esempi
Definizione
'@DEFAPPLOCK NOME["<LockName>"] _
GESTIONEDATI[DataElaboration()] _
GESTIONEERRORE[ErrorManagement()] _
TIPO[0] _
MODO[0]