DECLARE VARIABLE istruzione
L'istruzione DECLARE VARIABLE definisce un CCSID per una variabile host e il sottotipo della variabile. Quando compare in un programma applicativo, l'istruzione DECLARE VARIABLE fa sì che il precompilatore dell' Db2 e contrassegnare una variabile host con un CCSID specifico. Quando la variabile host compare in un'istruzione SQL, il precompilatore Db2 inserisce questo CCSID nelle strutture che genera per l'istruzione SQL.
Invocazione per DECLARE VARIABLE
Questa istruzione può essere inserita solo in un programma applicativo. Non è un'istruzione eseguibile.
Autorizzazione per DECLARE VARIABLE
Non è richiesta alcuna azione.
Sintassi per DECLARE VARIABLE
descrizione per DECLARE VARIABLE
- variabile host
- Identifica una variabile host di carattere o stringa grafica definita nel programma. Non è possibile specificare una variabile indicatrice per la variabile host.
- CCSID ASCII, EBCDIC o UNICODE
- Specifica che deve essere utilizzato il CCSID predefinito appropriato per lo schema di codifica specificato del server.
- CCSID ASCII
- Specifica che deve essere utilizzato il CCSID ASCII predefinito per il tipo di variabile sul server.
- CCSID EBCDIC
- Specifica che deve essere utilizzato il CCSID EBCDIC predefinito per il tipo di variabile sul server. CCSID EBCDIC è l'impostazione predefinita se questa opzione non è specificata.
- CCSID UNICODE
- Specifica che deve essere utilizzato il CCSID UNICODE predefinito per il tipo di variabile sul server.
- PER DATI SBCS, PER DATI MISTI o PER DATI BIT
- Specifica il tipo di dati contenuti nella variabile host-variable. La clausola FOR non può essere specificata quando si dichiara una variabile host grafica.
Per i dati ASCII o EBCDIC, se questa clausola non è specificata quando si dichiara una variabile host di carattere, il valore predefinito è FOR SBCS DATA se MIXED DATA = NO sul pannello di installazione DSNTIPF. L'impostazione predefinita è PER DATI MISTI se DATI MISTI = SÌ sul pannello di installazione DSNTIPF.
Per i dati UNICODE, l'impostazione predefinita è sempre PER DATI MISTI, indipendentemente dall'impostazione di DATI MISTI sul pannello di installazione DSNTIPF.
- FOR SBCS DATA
- Specifica che i valori della variabile host possono contenere solo dati SBCS (set di caratteri a byte singolo).
- FOR MIXED DATA
- Specifica che i valori della variabile host possono contenere sia dati SBCS che DBCS.
- FOR BIT DATA
- Specifica che i valori della variabile host non sono associati a un set di caratteri codificati e, pertanto, non vengono mai convertiti. Il CCSID di una variabile host FOR BIT DATA è 65535.
- CCSID numero intero-costante
- Specifica che i valori della variabile host contengono dati codificati utilizzando la costante intera CCSID. Se il numero intero è un CCSID SBCS, la variabile host è un dato SBCS. Se il numero intero è un CCSID di dati misti, la variabile host è di dati misti. Per le variabili host di caratteri, il CCSID specificato deve essere un SBCS, un CCSID misto o un CCSID UNICODE ( UTF-8 ). Per le variabili host grafiche, il CCSID specificato deve essere un CCSID DBCS o UNICODE ( UTF-16 ). L'intervallo di valori validi per l'intero è 1-65533.
Note per DECLARE VARIABLE
Posizionamento dell'istruzione : l'istruzione DECLARE VARIABLE può essere specificata in qualsiasi punto di un programma applicativo in cui le istruzioni SQL sono valide, con la seguente eccezione. L'istruzione DECLARE VARIABLE deve precedere un'istruzione SQL che fa riferimento a una variabile host specificata nell'istruzione DECLARE VARIABLE.
Eccezioni CCSID per EXECUTE IMMEDIATE o PREPARE : quando la variabile host compare in un'istruzione SQL, il precompilatore Db2 inserisce il CCSID numerico appropriato nelle strutture che genera per l'istruzione SQL. Questo posizionamento del CCSID si verifica per qualsiasi istruzione SQL diversa dalle istruzioni EXECUTE IMMEDIATE o PREPARE. Il posizionamento del CCSID avviene anche per una variabile host in un'istruzione EXECUTE IMMEDIATE o PREPARE, ma non avviene per una variabile in un'espressione stringa in un'istruzione EXECUTE IMMEDIATE o PREPARE.
Se un programma applicativo di tipo " PL/1 " contiene almeno un'istruzione DECLARE VARIABLE, un'espressione stringa in qualsiasi istruzione EXECUTE IMMEDIATE o PREPARE non può essere preceduta da due punti. Un'espressione che consiste solo in un nome di variabile preceduto da due punti viene interpretata come una variabile host.
Linguaggi host specifici : se in un programma sorgente assemblatore viene utilizzata un'istruzione DECLARE VARIABLE, non deve essere utilizzata l'opzione di elaborazione SQL ONEPASS. Se si utilizza un'istruzione DECLARE VARIABLE in un programma sorgente C, C++ o PL/I, è necessario utilizzare l'opzione di elaborazione SQL TWOPASS. Per tali linguaggi, o per COBOL, la definizione della variabile host può precedere o seguire un'istruzione DECLARE VARIABLE che fa riferimento a tale variabile. Se in un programma sorgente FORTRAN viene utilizzata un'istruzione DECLARE VARIABLE, la definizione della variabile host deve precedere l'istruzione DECLARE VARIABLE.
Esempio per DECLARE VARIABLE
Esempio : definire le seguenti variabili host utilizzando i tipi di dati PL/I: FRED come dati bit a lunghezza fissa, JEAN come dati (misti) a lunghezza fissa ( UTF-8 ), DAVE come dati (misti) a lunghezza variabile ( UTF-8 ), PETE come dati (misti) grafici a lunghezza fissa (graphic UTF-16 ) e AMBER come dati (misti) grafici a lunghezza variabile ( UTF-16 ).
EXEC SQL BEGIN DECLARE SECTION;
DCL FRED CHAR(10);
EXEC SQL DECLARE :FRED VARIABLE CCSID EBCDIC FOR BIT DATA;
DCL JEAN CHAR(30);
EXEC SQL DECLARE :JEAN VARIABLE CCSID 1208;
DCL DAVE CHAR(9) VARYING;
EXEC SQL DECLARE :DAVE VARIABLE CCSID UNICODE;
DCL PETE GRAPHIC(10);
EXEC SQL DECLARE :PETE VARIABLE CCSID 1200;
DCL AMBER GRAPHIC(20) VARYING;
EXEC SQL DECLARE :AMBER VARIABLE CCSID UNICODE;
EXEC SQL END DECLARE SECTION;