Ukuran Kolom

Ukuran kolom (atau parameter) dari jenis data numerik didefinisikan sebagai jumlah maksimum digit yang digunakan oleh jenis data kolom atau parameter, atau presisi data. Untuk jenis karakter, ini adalah panjang karakter data; untuk jenis data biner, ukuran kolom didefinisikan sebagai panjang dalam byte data. Untuk waktu, tanda waktu, dan semua jenis data interval, ini adalah jumlah karakter dalam representasi karakter data ini. Ukuran kolom yang ditentukan untuk setiap tipe data SQL ringkas diperlihatkan dalam tabel berikut.

pengidentifikasi jenis SQL Ukuran kolom
Semua jenis karakter[a],[b] Ukuran kolom yang ditentukan atau maksimum dalam karakter kolom atau parameter (seperti yang terkandung dalam bidang deskriptor SQL_DESC_LENGTH). Misalnya, ukuran kolom kolom karakter byte tunggal yang didefinisikan sebagai CHAR(10) adalah 10.
SQL_DECIMAL SQL_NUMERIC Jumlah digit yang ditentukan. Misalnya, presisi kolom yang didefinisikan sebagai NUMERIC(10,3) adalah 10.
SQL_BIT[c] 1
SQL_TINYINT[c] 3
SQL_SMALLINT[c] 5
SQL_INTEGER[c] 10
SQL_BIGINT[c] 19 (jika ditandatangani) atau 20 (jika tidak ditandatangani)
SQL_REAL[c] 7
SQL_FLOAT[c] 15
SQL_DOUBLE[c] 15
Semua jenis biner[a],[b] Panjang yang ditentukan atau maksimum dalam byte kolom atau parameter. Misalnya, panjang kolom yang didefinisikan sebagai BINARY(10) adalah 10.
SQL_TYPE_DATE[c] 10 (jumlah karakter dalam format yyyy-mm-dd ).
SQL_TYPE_TIME[c] 8 (jumlah karakter dalam format hh-mm-ss ), atau 9 + s (jumlah karakter dalam format hh:mm:ss[.fff...], di mana s adalah presisi detik).
SQL_TYPE_TIMESTAMP 16 (jumlah karakter dalam format yyyy-mm-dd hh:mm )

19 (jumlah karakter dalam format yyyy-mm-ddhh:mm:ss )

atau

20 + s (jumlah karakter dalam format yyyy-mm-dd hh:mm:ss[.fff...], di mana s adalah presisi detik).
SQL_INTERVAL_SECOND Di mana p adalah presisi terdepan interval dan s adalah presisi detik, p (jika s=0) atau ps++1 (jika s0>).[ d]
SQL_INTERVAL_DAY_TO_SECOND Di mana p adalah presisi terdepan interval dan s adalah presisi detik, 9+p (jika s=0) atau 10+ps+ (jika s0>).[ d]
SQL_INTERVAL_HOUR_TO_SECOND Di mana p adalah presisi terdepan interval dan s adalah presisi detik, 6+p (jika s=0) atau 7+ps+ (jika s0>).[ d]
SQL_INTERVAL_MINUTE_TO_SECOND Di mana p adalah presisi terdepan interval dan s adalah presisi detik, 3+p (jika s=0) atau 4+ps+ (jika s0>).[ d]
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE p, di mana p adalah presisi terdepan interval. [d]
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR 3+p, di mana p adalah presisi terdepan interval. [d]
SQL_INTERVAL_DAY_TO_MINUTE 6+p, di mana p adalah presisi terdepan interval. [d]
SQL_INTERVAL_HOUR_TO_MINUTE 3+p, di mana p adalah presisi terdepan interval. [d]
SQL_GUID 36 (jumlah karakter dalam format aaaaaaaaa-bbbb-cc-dddd-eeeeeeeeeeee )

[a] Untuk aplikasi ODBC 1.0 yang memanggil SQLSetParam di driver ODBC 2.0, dan untuk aplikasi ODBC 2.0 yang memanggil SQLBindParameter di driver ODBC 1.0, ketika *StrLen_or_IndPtr SQL_DATA_AT_EXEC untuk jenis SQL_LONGVARCHAR atau SQL_LONGVARBINARY, ColumnSize harus diatur ke panjang total data yang akan dikirim, bukan presisi seperti yang didefinisikan dalam tabel ini.

[b] Jika driver tidak dapat menentukan panjang kolom atau parameter untuk jenis variabel, driver akan mengembalikan SQL_NO_TOTAL.

[c] Argumen ColumnSize dari SQLBindParameter diabaikan untuk jenis data ini.

[d] Untuk aturan umum tentang panjang kolom dalam jenis data interval, lihat Panjang Jenis Data Interval, sebelumnya dalam lampiran ini.

Nilai yang dikembalikan untuk ukuran kolom (atau parameter) tidak sesuai dengan nilai di satu bidang deskriptor. Nilai bisa berasal dari bidang SQL_DESC_PRECISION atau SQL_DESC_LENGTH, bergantung pada jenis data, seperti yang diperlihatkan dalam tabel berikut ini.

Jenis SQL Bidang deskriptor yang terkait dengan

ukuran kolom atau parameter
Semua karakter dan jenis biner LENGTH
Semua jenis numerik PRESISI
Semua jenis tanggalwaktu dan interval LENGTH
SQL_BIT LENGTH