Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panjang data adalah panjang byte data seperti yang akan disimpan dalam buffer data aplikasi, bukan karena disimpan di sumber data. Perbedaan ini penting karena data sering disimpan dalam berbagai jenis dalam buffer data daripada di sumber data. Jadi untuk data yang dikirim ke sumber data, ini adalah panjang byte data sebelum konversi ke jenis sumber data. Untuk data yang diambil dari sumber data, ini adalah panjang byte data setelah konversi ke jenis buffer data dan sebelum pemotongan dilakukan.
Untuk data dengan panjang tetap, seperti bilangan bulat atau struktur tanggal, panjang byte data selalu menjadi ukuran tipe data. Secara umum, aplikasi mengalokasikan buffer data yang merupakan ukuran jenis data. Jika aplikasi mengalokasikan buffer yang lebih kecil, konsekuensinya tidak terdefinisi karena driver mengasumsikan buffer data adalah ukuran jenis data dan tidak memotong data agar sesuai dengan buffer yang lebih kecil. Jika aplikasi mengalokasikan buffer yang lebih besar, ruang tambahan tidak pernah digunakan.
Untuk data panjang variabel, seperti karakter atau data biner, penting untuk mengenali bahwa panjang byte data terpisah dari dan sering berbeda dari panjang byte buffer. Hubungan kedua panjang ini dijelaskan di bagian Buffer . Jika panjang byte data lebih besar dari panjang byte buffer, driver memotong data yang diambil ke panjang byte buffer dan mengembalikan SQL_SUCCESS_WITH_INFO dengan SQLSTATE 01004 (Data terpotong). Namun, panjang byte yang dikembalikan adalah panjang data yang tidak terpotong.
Misalnya, aplikasi mengalokasikan 50 byte untuk buffer data biner. Jika driver memiliki 10 byte data biner untuk dikembalikan, driver mengembalikan 10 byte tersebut dalam buffer. Panjang byte data adalah 10, dan panjang byte buffer adalah 50. Jika driver memiliki 60 byte data biner untuk dikembalikan, driver akan memotong data menjadi 50 byte, mengembalikan byte tersebut di buffer, dan mengembalikan SQL_SUCCESS_WITH_INFO. Panjang byte data adalah 60 (panjang sebelum pemotongan), dan panjang byte buffer masih 50.
Rekaman diagnostik dibuat untuk setiap kolom yang dipotong. Karena perlu waktu bagi driver untuk membuat rekaman ini dan agar aplikasi memprosesnya, pemotongan dapat menurunkan performa. Biasanya, aplikasi dapat menghindari masalah ini dengan mengalokasikan buffer yang cukup besar, meskipun ini mungkin tidak mungkin saat bekerja dengan data panjang. Ketika pemotongan data terjadi, aplikasi terkadang dapat mengalokasikan buffer yang lebih besar dan mengambil kembali data; ini tidak benar dalam semua kasus. Jika pemotongan terjadi saat mendapatkan data dengan panggilan ke SQLGetData, aplikasi tidak perlu memanggil SQLGetData untuk data yang telah dikembalikan; untuk informasi selengkapnya, lihat Mendapatkan Data Panjang.