COPYDBDATA
Copia i record selezionati dalla tabella o dalla query sorgente alla tabella destinazione. I record sono selezionati mediante il criterio indicato dal parametro SELEZIONI[].
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| TABELLASORG | |||||
| TIPORECSORG | |||||
| QUERYSORG | Long | ||||
| TABELLADEST | |||||
| TIPORECDEST | |||||
| GRUPPOSORG | Stringa | ||||
| GRUPPODEST | Stringa | ||||
| VIRTUALESORG | Intero | ||||
| VIRTUALEDEST | Intero | ||||
| IND | |||||
| SELEZIONI | |||||
| SELEZIONIESTESE | |||||
| NUMRECORD | Long | ||||
| ASSEGNA | |||||
| ERRORE | |||||
| IDENTITYINSERT | Intero | 28.1 | |||
| TABLOCK | Booleano | 29.1 |
TABELLASORG
Nome del DFX della tabella sorgente da cui reperire le caratteristiche della tabella, se sono indicati il dizionario dati e la sua versione fa riferimento la 'fotografia' del DFX alla determinata versione del dizionario dati indicata.
TIPORECSORG
Tipo record della tabella sorgente da utilizzare per la lettura della tabella. Se omesso si utilizza il primo (o unico) tipo record definito per la tabella.
QUERYSORG
Indica come sorgente dei dati la query. I record letti dalla query sono inseriti nella tabella destinazione. Ogni campo della tabella destinazione è valorizzato con il campo avente alias uguale al nome interno, oppure dall'espressione definita dall'attributo ASSEGNA.
Dalla versione 19.3 d'ambiente se la query sorgente specifica un ordinamento e la tabella destinazione ha un campo autoincrementale, l'ambiente preserva l'ordinamento. Detto in altri termini verrà inserito la clausola ORDER BY nella istruzione SQL INSERT ... SELECT.
TABELLADEST
Nome del DFX della tabella di destinazione da cui reperire le caratteristiche della tabella, se sono indicati il dizionario dati e la sua versione fa riferimento la 'fotografia' del DFX alla determinata versione del dizionario dati indicata.
TIPORECDEST
Tipo record della tabella destinazione da utilizzare per la scrittura della tabella. Se omesso si utilizza il primo (o unico) tipo record definito per la tabella.
GRUPPOSORG
Definisce il valore del campo speciale DBGruppo dei record estratti dalla tabella sorgente o dalla query sorgente. Se non specificato si utilizza il valore di BCContextInfo.GetGruppo.
GRUPPODEST
Definisce il valore del campo speciale DBGruppo dei record inseriti nella tabella destinazione. Se non specificato si utilizza il valore di BCContextInfo.GetGruppo.
VIRTUALESORG
Il parametro permette la sovrapposizione tra la gestione delle tabelle su DB e la gestione delle tabelle in Struttura Dinamica relativamente alla sorgente dei dati.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | La specifica gestisce il normale accesso alla tabella del DataBase. |
1 | La specifica gestisce l'accesso alla Struttura Dinamica in memoria, struttura definita con lo stesso nome del DFX della tabella. |
2 | La specifica gestisce solo l'accesso alla Struttura per le operazioni di LETTURA, mentre vengono gestiti sia il DB che la Struttura per le operazioni di SCRITTURA/CANCELLAZIONE |
VIRTUALEDEST
Il parametro permette la sovrapposizione tra la gestione delle tabelle su DB e la gestione delle tabelle in Struttura Dinamica relativamente alla destinazione dei dati.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | La specifica gestisce il normale accesso alla tabella del DataBase. |
1 | La specifica gestisce l'accesso alla Struttura Dinamica in memoria, struttura definita con lo stesso nome del DFX della tabella. |
2 | La specifica gestisce solo l'accesso alla Struttura per le operazioni di LETTURA, mentre vengono gestiti sia il DB che la Struttura per le operazioni di SCRITTURA/CANCELLAZIONE |
SELEZIONI
Indica una o più condizioni che se verificate fanno sì che il record sia selezionato
SELEZIONIESTESE
Indica una o più condizioni che richiedono una sintassi estesa rispetto quanto possibile dal parametro SELEZIONI[]
NUMRECORD
Variabile numerica che riceve il numero di record copiati.
ASSEGNA
Permette di indicare per un campo della tabella destinazione la formula di valorizzazione, indicando il campo, l'operatore di assegnazione (=) e l'espressione per valorizzare il campo.
L'espressione è una formula nella forma: <Operando> <Operatore> <Espressione> oppure <Funzione> (<Espressione>, <Espressione>, ...) <operatore> <espressione>. Se l'alias dei campi è uguale al nome abbreviato del campo (senza tipo record), l'assegnazione è automatica senza dover esplicitare il parametro ASSEGNA. Dettaglio gestione formula di valorizzazione nel parametro ASSEGNA[]. E' possibile indicare fino a 100 ricorrenze del parametro ASSEGNA[].
ERRORE
Indica un'azione da eseguire nel caso in cui non sia stato possibile inserire il record o perché esiste già la chiave o perché il disco è pieno.
IDENTITYINSERT
Permette, solo in ambito DataBase, di definire il comportamento della specifica a fronte di un campo autoincrementale.
TABLOCK
Permette di indicare l'operazione che blocca l'intera tabella durante l'esecuzione.
- Il blocco è utile in particolari situazioni e va usato nei contesti in cui si è certi che non si fermi l'operatività dell'installazione.
Vantaggi:
- Dimensione del log ridotta al minimo
- Ottimizzazione della velocità (se siamo in un contesto di bassa concorrenza, come durante un aggiornamento di db).
Svantaggi:
- La tabella è bloccata durante l'intera esecuzione, in caso di concorrenza si possono verificare dei blocchi.
Esempi
Definizione
DIM famCodeFilter[STRING] = "01"
'@COPYDBDATA TABELLASORG[BLDFAMIGLIA] _
TABELLADEST[BLDFAMIGLIA TEMPORANEO] _
IND[0 \COD = ""\] _
SELEZIONI[FAMCOD$ = famCodeFilter]
Definizione con parametro ASSEGNA
DIM idQuery[INT]
'@DEFQUERY IDQUERY[idQuery] NOME["BCRIF_COPYDBDATA_8"]
'@DEFQUERYFROM IDQUERY[idQuery] TABELLA[BLDFAMIGLIA]
'@DEFQUERYCOLUMN IDQUERY[idQuery] _
ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DATAINIZVAL AS [DataInizioVal]]
'@COPYDBDATA QUERYSORG[idQuery] _
TABELLADEST[BLDFAMIGLIA TEMPORANEO] _
IND[0 \COD = ""\] _
ASSEGNA[FAMCOD$ = BLDFAMIGLIA.COD] _
ASSEGNA[FAMDES$ = varAssegnaFamDes] _
ASSEGNA[FAMDATAINIZVAL = ALIAS["DataInizioVal"]] _
ASSEGNA[FAMDATAFINEVAL = FNDATE(2024,11,02)]