DEFQUERY
Permette di inizializzare una query per la sua successiva definizione di utilizzo nelle operazioni di lettura.
La query può essere inizializzata nei seguenti modi:
- definizione esplicita da programma
- lettura della definizione dal file XML di rappresentazione di una query (con estensione .SXQRY o .SXRPT)
- definizione mediante un comando SQL
L'utilizzo della forma contratta delle specifiche di definizione della query ('@FROM, '@JOIN, '@COLUMN, ecc...) sono ammesse soltanto in ambito di oggetto query ('@PGQUERY/'@ENDQUERY).
Deve essere la prima operazione da fare per costruire una query da programma.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| QUERY | Classe BCQUERY | 31.3 | |||
| IDQUERYPADRE | Long | ||||
| DESCRIZIONE | Stringa | ||||
| ELIMINADUPLICATI | Intero | ||||
| MAXRECORD | Long | ||||
| MULTIGRUPPO | Intero | ||||
| MULTISTAZIONE | Intero | ||||
| MULTIDOMINIO | Intero | ||||
| FILE | Stringa | ||||
| BLOB | Blob | ||||
| IDCOMANDO | Intero | ||||
| MODIFICA | Intero | ||||
| DIRDIZIONARIO | Stringa | ||||
| VINCOLI | Intero | ||||
| CTE | |||||
| NOLOCK | Intero | ||||
| ERRORE | Intero | ||||
| NOME | Stringa | 27.3 | |||
| OPTION | Stringa | 31.4 |
IDQUERY
Identificatore della query restituito dalla specifica DEFQUERY
QUERY
Identificatore della query, da usarsi nel richiamo delle successive specifiche di definizione o di esecuzione della query.
IDQUERYPADRE
Indica l'identificatore della query esterna che contiene la SubQuery, da usarsi nel richiamo delle successive specifiche di definizione della SubQuery.
DESCRIZIONE
Indica la descrizione da associare alla query.
Ha rilevanza esclusivamente documentativa.
ELIMINADUPLICATI
Indica se eliminare dal risultato della query le eventuali righe duplicate (con stessi valori su tutte le colonne).
Corrisponde all'applicazione della clausola DISTINCT al comando SQL della query.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
MAXRECORD
Definisce il numero di record da leggere dall'insieme dei record restituiti dalla query.
Corrisponde all'applicazione della clausola TOP al comando SQL della query.
Se si indica un valore 0 vengono estratti tutti i record
MULTIGRUPPO
Indica se applicare o meno il filtro automatico sul campo GR (DBGruppo) sulle tabelle di gruppo nella query.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Applica il filtro sul campo gruppo per le tabelle di gruppo |
1 | Non applica il filtro sul campo gruppo per le tabelle di gruppo |
MULTISTAZIONE
Indica se applicare o meno il filtro automatico sul campo WS (DBStazione) sulle tabelle di stazione nella query.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | viene applicato il filtro sul campo stazione per le tabelle che lo prevedono |
1 | non viene applicato il filtro sul campo stazione per le tabelle che lo prevedono (legge tutto) |
MULTIDOMINIO
Indica la possibilità di accedere ai record di una tabella relativi a più domini.
Se l'attributo è omesso il meccanismo di gestione del multi-dominio non viene abilitato.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
FILE
Indica il file XML dal quale leggere la definizione della query, precedentemente salvata attraverso la specifica @SAVEQUERY.
Il parametro deve fornire il percorso completo (cartella e nome) del file contenente la definizione della query. L'estensione predefinita per il file di definizione di una query è .SXQRY. Se non viene indicata verrà assegnata di default l'estensione .SXQRY.
È possibile indicare anche un file di definizione di un report .SXRPT. La specifica provvederà alla lettura della query definita per il report.
L'utilizzo del parametro esclude l'utilizzo dei parametri: BLOB, IDCOMANDO
BLOB
Indica la variabile di tipo BLOB che contiene la definizione della query, precedentemente salvata con la specifica @SAVEQUERY.
L'utilizzo del parametro esclude l'utilizzo dei parametri: FILE, IDCOMANDO
IDCOMANDO
Consente la definizione della query a partire da un comando SQL definito da una precedente @DEFSQLCOMMAND.
L'utilizzo del parametro esclude l'utilizzo dei parametri: FILE, BLOB
MODIFICA
Parametro di utilizzo interno (BCFSQL).
Indica che la query è predisposta all'aggiornamento di record. Se indicato questo parametro, è ammesso l'utilizzo del parametro ASSEGNA sulla @DEFQUERYCOLUMN.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Query di estrazione dati |
1 | Query di modifica dati |
DIRDIZIONARIO
È un parametro di utilizzo interno (REPORTER).
Indica la direttiva di collocazione del dizionario dati.
VINCOLI
Permette di attivare la profilazione avanzata sulla query e di specificare la modalità di gestione dei record esclusi dal vincolo di profilazione della tabella.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
CTE
Consente di identificare la query come common table expression.
NOLOCK
Indica se effettuare la lettura dei dati senza lock.
Corrisponde all'applicazione della clausola WITH (NOLOCK) su tutte le tabelle SQL presenti nella query.
ERRORE
Consente al programma di intercettare e gestire l'errore restituito dalla funzione.
Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.
NOME
Indica il nome della query da vedere nel BcProfiler.
Ha rilevanza esclusivamente documentativa.
OPTION
Indicare con sitassi SQL l'hint da applicare alla query, in esecuzione verrà riportato al fondo della query.
Esempi
Definizione base
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_IdQry"]
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[IdQry] _
ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDART.PREZZO AS [Prezzo]]
' Statement SQL generato
'
' SELECT CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' ,Prezzo AS [Prezzo]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')
' Risultato della query
'
' CodArt DesArt Prezzo
' --------- --------------- ---------
' 001 Articolo 001 120.00
' 002 Articolo 002 134.00
' 003 Articolo 003 125.00
' 004 Articolo 004 123.00
' 005 Articolo 005 2.50
' 006 Articolo 006 2.89
' 007 Articolo 007 3.23
' 008 Articolo 008 3.10
' 009 Articolo 009 2.78
' 010 Articolo 010 3.40
' ... ... ...
Definizione con parametro ELIMINADUPLICATI
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"] ELIMINADUPLICATI
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDVAR]
'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDVAR.CODART AS [CodArt]] _
ESPR[BLDVAR.COSTO AS [CodCostoSTD]]
' Statement SQL generato
'
' SELECT DISTINCT CodArt AS [CodArt]
' ,CodCostoSTD AS [CodCostoSTD]
' FROM BLDVarianti AS [BLDVarianti]
' WHERE (DBGruppo = 'GG')
'
' Risultato della query | Risultato della query senza ELIMINADUPLICATI
' |
' CodArt CodCostoSTD | CodArt CodCostoSTD
' --------- -------------- | --------- --------------
' 001 22.000000 | 001 22.000000
' 001 23.000000 | 001 23.000000
' 001 25.000000 | 001 25.000000
' 005 23.670000 | 005 23.670000
' 018 0.000000 | 018 0.000000
' MAT1 2.000000 | 018 0.000000
' MAT1 3.000000 | 018 0.000000
' | MAT1 2.000000
' | MAT1 3.000000
Definizione con parametro MAXRECORD
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"] MAXRECORD[5]
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]
' Statement SQL generato
'
' SELECT TOP 5 CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')
'
' Risultato della query | Risultato della query senza MAXRECORD[]
' |
' CodArt DesArt | CodArt DesArt
' --------- --------------- | --------- ---------------
' 001 Articolo 001 | 001 Articolo 001
' 002 Articolo 002 | 002 Articolo 002
' 003 Articolo 003 | 003 Articolo 003
' 004 Articolo 004 | 004 Articolo 004
' 005 Articolo 005 | 005 Articolo 005
' | 006 Articolo 006
' | 007 Articolo 007
' | 008 Articolo 008
' | 009 Articolo 009
' | 010 Articolo 010
' | ... ...
Definizione con parametro MULTIGRUPPO
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"]
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDART.*GR* AS [GrupArt]] _
ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]
'@DEFQUERYWHERE IDQUERY[IdQry] ESPR[INLIST(BLDART.*GR*,"GG,CC") > 0]
' Statement SQL generato | Statement SQL generato senza MULTIGRUPPO[]
' |
' SELECT DBGruppo AS [GrupArt] | SELECT DBGruppo AS [GrupArt]
' ,CodArt AS [CodArt] | ,CodArt AS [CodArt]
' ,DesArt AS [DesArt] | ,DesArt AS [DesArt]
' FROM BLDArticoli AS [BLDArticoli] | FROM BLDArticoli AS [BLDArticoli]
' WHERE ( | WHERE (
' DBGruppo IN ( | (
' 'GG' | DBGruppo IN (
' ,'CC' | 'GG'
' ) | ,'CC'
' ) | )
' | )
' | )
' | AND (DBGruppo = 'GG')
' |
' Risultato della query | Risultato della query senza MULTIGRUPPO[]
' |
' GrupArt CodArt DesArt | GrupArt CodArt DesArt
' --------- --------- --------------- | --------- --------- ---------------
' ... |
' CC 024 Articolo 024 | GG 001 Articolo 001
' CC 025 Articolo 025 | GG 002 Articolo 002
' CC 026 Articolo 026 | GG 003 Articolo 003
' CC 027 Articolo 027 | GG 004 Articolo 004
' CC 028 Articolo 028 | GG 005 Articolo 005
' GG 001 Articolo 001 | GG 010 Articolo 006
' GG 002 Articolo 002 | GG 011 Articolo 007
' GG 003 Articolo 003 | GG 012 Articolo 008
' GG 004 Articolo 004 | GG 013 Articolo 009
' GG 005 Articolo 005 | GG 014 Articolo 010
' ... | ...
Definizione con comando SQL parametrico
DIM commandId[INT]
DIM families[CLASSE[BLD_FAMIGLIA] COLLEZIONE]
families.Clear()
DIM MAXRECORD[INT] = 10
' Le variabili inserite in BCVIN[] e BCVOUT[] devono avere il nome tutto in maiuscolo
DIM SQLCommand[STRING]="SELECT TOP (BCVIN[MAXRECORD]) BLDFamiglie.CodFamiglia AS [CodFamiglia], BLDFamiglie.DesFamiglia AS [DesFamiglia] FROM BLDFamiglie WHERE BLDFamiglie.DBGruppo = 'GG'"
'@DEFSQLCOMMAND IDCOMANDO[commandId] COMANDO[SQLCommand]
'@DEFQUERY IDQUERY[IdQry] IDCOMANDO[commandId] NOME["BCRIF_DEFQUERY_11"]
' Statement SQL generato
'
' SELECT TOP (10) BLDFamiglie.CodFamiglia AS [CodFamiglia]
' ,BLDFamiglie.DesFamiglia AS [DesFamiglia]
' FROM BLDFamiglie
' WHERE BLDFamiglie.DBGruppo = 'GG'
'
' Risultato della query
'
' CodFamiglia DesFamiglia
' -------------- --------------
' 01 Famiglia 01
' 02 Famiglia 02
' 03 Famiglia 03
' 04 Famiglia 04
' 05 Famiglia 05
' 06 Famiglia 06
' 07 Famiglia 07
' 08 Famiglia 08
' 09 Famiglia 09
Definizione base con oggetto query
'@DEFQUERY QUERY[Query] NOME["BCRIFQRY_ART_DEFINIZIONE_Query"]
'@FROM TABELLA[BLDART]
'@COLUMN ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDART.PREZZO AS [Prezzo]]
'@ENDQUERY
' Statement SQL generato
'
' SELECT CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' ,Prezzo AS [Prezzo]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')
' Risultato della query
'
' CodArt DesArt Prezzo
' --------- --------------- ---------
' 001 Articolo 001 120.00
' 002 Articolo 002 134.00
' 003 Articolo 003 125.00
' 004 Articolo 004 123.00
' 005 Articolo 005 2.50
' 006 Articolo 006 2.89
' 007 Articolo 007 3.23
' 008 Articolo 008 3.10
' 009 Articolo 009 2.78
' 010 Articolo 010 3.40
' ... ... ...
Riferimenti
Le query in BC
Le subquery in BC
Le common table expressions (CTEs) in BC