Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La progettazione delle API ODBC è simile ad altre API ISAM. Queste API sono basate su handle. Dopo l'apertura di un file, l'applicazione può determinare le dimensioni del buffer richieste per memorizzare una riga, utilizzare l'API cursore per lo spostamento e, facoltativamente, recuperare una o più righe di dati con il binding a livello di riga.
I dati vengono convertiti in tipi di dati SQL predefiniti, come definito in ODBC. Nella tabella seguente sono elencate queste conversioni.
Tipo di dati DB2 | Tipo di dati SQL predefinito | Esposto come tipo nativo in SQLGetTypeInfo | Commenti |
---|---|---|---|
BIGINT | Integer di 8 byte. Questo tipo di dati è supportato solo in DB2 UDB. |
||
BLOB | Un BLOB (Binary Large Object) è una stringa di lunghezza variabile che può raggiungere fino a 2 gigabyte di lunghezza. Un BLOB è destinato principalmente alla memorizzazione di dati binari. Questo tipo di dati non è supportato dal driver ODBC per DB2. |
||
CHAR (BIT) | SQL_BINARY | No | Stringa di caratteri a lunghezza fissa (solo doppio byte). |
CHAR (SBCS) | SQL_CHAR | Sì | Una stringa di caratteri SBCS di lunghezza fissa. |
CHAR (MISTO) | SQL_CHAR | No | Stringa di caratteri mista a lunghezza fissa (singolo e doppio byte). |
CLOB | Un CLOB (Character Large Object) è una stringa di lunghezza variabile che può raggiungere fino a 2 gigabyte di lunghezza. Un CLOB è utilizzato per memorizzare grandi quantità di dati basati su set di caratteri a byte singolo. Un CLOB può essere considerato come una stringa di caratteri. Questo tipo di dati non è supportato dal driver ODBC per DB2. |
||
DATE | SQL_TYPE_DATE | Sì | Stringa di 10 byte contenente una data. Questo tipo di dati viene convertito in un SQL_DATE da usare da ODBC. |
DBCLOB | Un oggetto large Double-Byte carattere (DBCLOB) è una stringa di lunghezza variabile di caratteri double-byte che possono essere fino a 2 gigabyte di lunghezza (1.073.741.823 caratteri a byte doppie). Viene usato un DBCLOB per archiviare dati di set di caratteri double-byte di grandi dimensioni. Un DBCLOB viene considerato come una stringa grafica. Non è supportato dal driver ODBC per DB2. |
||
DECIMAL | SQL_DECIMAL | Sì | Un numero decimale compresso. |
DOUBLE | SQL_DOUBLE | Sì | Un numero di 8 byte a virgola mobile a precisione doppia. |
FLOAT | SQL_FLOAT | Sì | Un numero di 8 byte a virgola mobile a precisione doppia. Questo tipo di dati corrisponde a DOUBLE. |
GRAFICA (DBCS) | SQL_CHAR | No | Stringa grafica a lunghezza fissa costituita da una sequenza di dati di stringa di caratteri double byte (solo DBCS). |
INTEGER | SQL_INTEGER | Sì | Intero a 4 byte con precisione di 10 cifre che vanno da -2,147,463,648 a +2,147,483,647. |
LONG VARCHAR (BIT) | SQL_BINARY | No | Stringa di caratteri a lunghezza variabile (solo doppio byte). |
LONG VARCHAR (SBCS) | SQL_CHAR | No | Stringa di caratteri SBCS a lunghezza variabile. |
LONG VARCHAR (MIXED) | SQL_CHAR | No | Stringa a lunghezza variabile mista (singolo e doppio byte). |
LONG VARGRAPHIC (DBCS) | SQL_LONGVARCHAR | No | Stringa grafica a lunghezza variabile costituita da una sequenza di dati di caratteri double byte (solo DBCS). |
SMALLINT | SQL_SMALLINT | Sì | Uno SMALLINT (Small Integer) è un integer di due byte con una precisione di 5 cifre, con valore compreso tra -32.768 e +32.767. |
REAL | SQL_REAL | Sì | Un numero di 4 byte a virgola mobile a precisione singola. |
TIME | SQL_TYPE_TIME | Sì | Stringa di 8 byte contenente un'ora. Durante l'uso di oggetti dati ActiveX per la restituzione di dati da un tipo di dati DB2 TIME, ADO restituisce un valore DATETIME. |
TIMESTAMP | SQL_TYPE_TIMESTAMP | Sì | Una stringa di 26 byte che rappresenta data, ora e microsecondi. |
VARCHAR (BIT) | SQL_BINARY | No | Stringa di caratteri a lunghezza variabile (solo a byte doppio). |
VARCHAR (SBCS) | SQL_CHAR | Sì | Una stringa di caratteri di lunghezza variabile. |
VARCHAR (MIXED) | SQL_CHAR | No | Stringa di caratteri mista a lunghezza variabile (a bye singolo e doppio). |
VARGRAPHIC (DBCS) | SQL_VARCHAR | No | Stringa grafica a lunghezza variabile costituita da una sequenza di dati stringa di caratteri a byte doppio (solo DBCS). |
Non tutte le piattaforme e le versioni di DB2 supportano tutti i tipi di dati di riferimento precedenti. Consultare le informazioni di riferimento su IBM SQL per la piattaforma e la piattaforma e la versione specifiche di DB2.
Il driver ODBC per DB2 espone solo i tipi di dati DB2 selezionati come tipi nativi nella funzione del catalogo ODBC GetTypeInfo. Ad esempio, il driver non espone i tipi LONG CHARACTER o VARYING LONG CHARACTER. Questi tipi vengono invece esposti rispettivamente come CHARACTER e VARYING CHARACTER. Inoltre, il driver espone CHARACTER FOR SBCS DATA, CHARACTER FOR MIXED DATA e CHARACTER FOR BIT DATA come CHARACTER. Il driver espone VARYING CHARACTER FOR SBCS DATA, VARYING CHARACTER FOR MIXED DATA e VARYING CHARACTER FOR BIT DATA as VARYING CHARACTER.The driver exposes VARYING CHARACTER FOR BIT DATA AS VARYING CHARACTER. Tuttavia, il driver ODBC per DB2 restituisce questi tipi di dati LONG e VARYING LONG se si legge una tabella con questi tipi di dati. Ad esempio, quando si legge una tabella con una stringa di caratteri variabile di lunghezza maggiore di 254 byte, il driver ODBC per DB2 restituisce un valore LONG VARCHAR.
La lunghezza massima dei tipi di dati DB2 character e graphic string dipende dalla piattaforma e dalla versione DB2. Ad esempio, un tipo CHAR in DB2 per z/OS V5R1 ha una lunghezza massima di 254 byte, mentre un tipo CHAR in DB2/400 V4R4 ha una lunghezza massima di 32.766 byte.
Le conversioni di dati da un tipo numerico di grandi dimensioni a un tipo numerico ridotto sono supportate (da DOUBLE a SINGLE e da INT a SMALLINT, ad esempio), è possibile che si verifichino errori di troncamento e conversione che non verranno segnalati dal driver ODBC per DB2.
Usando il driver ODBC per DB2, alcune conversioni di stringhe da EBCDIC a ASCII e quindi in EBCDIC sono asimmetriche e possono comportare stringhe diverse dall'originale. La specifica EBCDIC contiene ordinali per cui non è definito un carattere. ODBC Driver for DB2 converte tutti questi caratteri non definiti nel carattere punto interrogativo ("?"). Pertanto, quando le stringhe ASCII contenenti questi caratteri vengono convertite nuovamente in EBCDIC, questi caratteri non definiti vengono sostituiti con punti interrogativi. Per proteggere le stringhe EBCDIC contenenti caratteri indefiniti, questi campi devono essere contrassegnati come stringhe binarie e mappati all'applicazione.
Le conversioni di caratteri DA ANSI a EBCDIC interessate includono quanto segue:
Valore carattere (decimale) | Valore carattere (esadecimale) | Tabella codici ANSI 1252 | Carattere EBCDIC dopo la conversione in CCSID 37 |
---|---|---|---|
128 | 0x80 | Non usato | ? |
130 | 0x82 | Virgoletta singola bassa | ? |
131 | 0x83 | Lettera latina F con gancio | ? |
132 | 0x84 | Virgoletta doppia bassa | ? |
133 | 0x85 | Puntini di sospensione | ? |
134 | 0x86 | Spada | ? |
135 | 0x87 | Doppia spada | ? |
136 | 0x88 | Segno di per mille | ? |
137 | 0x89 | Lettera S con pipa | ? |
138 | 0x8A | Parentesi angolare sinistra | ? |
139 | 0x8B | OE con legatura | ? |
140 | 0x8C | Non usato | ? |
142 | 0x8E | Non usato | ? |
145-156 | 0x91-0x9C | ? | |
158-159 | 0x9E-0x9F | ? |