Condividi tramite


Override della precisione iniziale e in secondi predefinita per i tipi di dati intervallo

Quando il campo SQL_DESC_TYPE di un ARD è impostato su un tipo datetime o interval C, chiamando SQLBindCol o SQLSetDescField, il campo SQL_DESC_PRECISION (che contiene la precisione dei secondi di intervallo) viene impostato sulle impostazioni predefinite seguenti:

  • 6 per timestamp e tutti i tipi di dati intervallo con un secondo componente.

  • 0 per tutti gli altri tipi di dati.

Per tutti i tipi di dati intervallo, il campo descrittore SQL_DESC_DATETIME_INTERVAL_PRECISION, che contiene la precisione del campo iniziale intervallo, viene impostato su un valore predefinito pari a 2.

Quando il campo SQL_DESC_TYPE in un APD è impostato su un tipo datetime o interval C, chiamando SQLBindParameter o SQLSetDescField, i campi SQL_DESC_PRECISION e SQL_DESC_DATETIME_INTERVAL_PRECISION nel APD vengono impostati sul valore predefinito specificato in precedenza. Questo vale per i parametri di input, ma non per i parametri di input/output o di output.

Una chiamata a SQLSetDescRec imposta la precisione iniziale dell'intervallo sul valore predefinito, ma imposta la precisione dei secondi di intervallo (nel campo SQL_DESC_PRECISION) sul valore dell'argomento Precisione .

Se una delle impostazioni predefinite indicate in precedenza non è accettabile per un'applicazione, l'applicazione deve impostare il campo SQL_DESC_PRECISION o SQL_DESC_DATETIME_INTERVAL_PRECISION chiamando SQLSetDescField.

Se l'applicazione chiama SQLGetData per restituire dati in un tipo datetime o interval C, viene usata la precisione iniziale dell'intervallo predefinito e la precisione dei secondi di intervallo. Se il valore predefinito non è accettabile, l'applicazione deve chiamare SQLSetDescField per impostare il campo descrittore o SQLSetDescRec per impostare SQL_DESC_PRECISION. La chiamata a SQLGetData deve avere un targetType di SQL_ARD_TYPE per usare i valori nei campi del descrittore.

Quando viene chiamato SQLPutData , la precisione iniziale dell'intervallo e l'intervallo di precisione vengono letti dai campi del record descrittore che corrispondono al parametro o alla colonna data-at-execution, che sono campi APD per le chiamate a SQLExecute o SQLExecDirect o campi ARD per le chiamate a SQLBulkOperations o SQLSetPos.