Bagikan melalui


srv_convert (EXTENDED Stored Procedure API)

Berlaku untuk:SQL Server

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan integrasi CLR sebagai gantinya.

Mengubah data dari satu jenis data ke jenis data lainnya.

Sintaks

  
int srv_convert (  
SRV_PROC *  
srvproc  
,  
int  
srctype  
,  
void *  
src  
,  
DBINT  
srclen  
,  
int  
desttype  
,  
void *  
  dest  
,  
DBINT  
destlen  
);  

Argumen

srvproc
Adalah penunjuk ke struktur SRV_PROC yang merupakan handel untuk koneksi klien tertentu. Struktur berisi semua informasi kontrol yang digunakan EXTENDED Stored Procedure API untuk mengelola komunikasi dan data antara aplikasi dan klien. Jika handel srvproc disediakan, handel tersebut diteruskan ke fungsi handler kesalahan EXTENDED Stored Procedure API saat terjadi kesalahan.

srctype
Menentukan tipe data data yang akan dikonversi. Parameter ini dapat berupa salah satu jenis data EXTENDED Store Procedure API.

src
Adalah penunjuk ke data yang akan dikonversi. Parameter ini dapat berupa salah satu jenis data EXTENDED Store Procedure API.

srclen
Menentukan panjang, dalam byte, dari data yang akan dikonversi. Jika srclen adalah 0, srv_convert menempatkan nilai null dalam variabel tujuan. Kecuali 0, parameter ini diabaikan untuk jenis data panjang tetap, dalam hal ini data sumber diasumsikan NULL. Untuk data jenis data SRVCHAR, panjang -1 menunjukkan string dihentikan null.

desttype
Menentukan jenis data untuk mengonversi sumber. Parameter ini dapat berupa salah satu jenis data EXTENDED Store Procedure API.

Dest
Adalah penunjuk ke variabel tujuan yang menerima data yang dikonversi. Jika pointer ini NULL, srv_convert memanggil handler kesalahan yang disediakan pengguna , jika ada, dan mengembalikan -1.

Jika desttype adalah SRVDECIMAL atau SRVNUMERIC, parameter dest harus menjadi penunjuk ke struktur DBNUMERIC atau DBDECIMAL dengan bidang presisi dan skala struktur yang sudah diatur ke nilai yang diinginkan. Anda dapat menggunakan DEFAULTPRECISION untuk menentukan presisi default, dan DEFAULTSCALE untuk menentukan skala default.

destlen
Menentukan panjang, dalam byte, dari variabel tujuan. Parameter ini diabaikan untuk jenis data panjang tetap. Untuk variabel tujuan jenis SRVCHAR, nilai destlen harus panjang total ruang buffer tujuan. Panjang -1 untuk variabel tujuan jenis SRVCHAR atau SRVBINARY menunjukkan ada cukup ruang yang tersedia. Untuk variabel tujuan jenis srvchar, panjang -1 menyebabkan string karakter dihentikan null.

Mengembalikan

Panjang data yang dikonversi, dalam byte, jika konversi jenis data berhasil. Ketika srv_convert menemukan permintaan untuk konversi yang tidak didukungnya, ia memanggil penangan kesalahan yang disediakan pengembang, jika ada, menetapkan nomor kesalahan global, dan mengembalikan -1.

Keterangan

Fungsi srv_willconvert menentukan apakah konversi tertentu diizinkan.

Mengonversi ke perkiraan jenis data numerik SRVFLT4 atau SRVFLT8 dapat mengakibatkan hilangnya presisi. Mengonversi dari perkiraan jenis data numerik SRVFLT4 atau SRVFLT8 ke SRVCHAR atau SRVTEXT juga dapat mengakibatkan hilangnya presisi.

Mengonversi ke SRVFLTx, SRVINTx, SRVMONEY, SRVMONEY4, SRVDECIMAL, atau SRVNUMERIC dapat mengakibatkan luapan jika jumlahnya lebih besar dari nilai maksimum tujuan, atau dalam aliran bawah jika jumlahnya lebih kecil dari nilai minimum tujuan. Jika luapan terjadi saat mengonversi ke SRVCHAR atau SRVTEXT, karakter pertama dari nilai yang dihasilkan berisi tanda bintang (*) untuk menunjukkan kesalahan.

Saat mengonversi SRVCHAR ke SRVBINARY, srv_convert menafsirkan SRVCHAR sebagai heksadesimal, apakah string berisi 0 di depan atau tidak. Saat mengonversi SRVBINARY ke SRVCHAR, srv_convert membuat string heksadesimal tanpa 0 di depannya. Dalam semua kasus lain, konversi ke atau dari jenis data SRVBINARY adalah salinan bit lurus.

Dalam kasus tertentu, dapat berguna untuk mengonversi jenis data ke dirinya sendiri. Misalnya, mengonversi SRVCHAR ke SRVCHAR dengan destlen -1 menambahkan terminator null ke string.

Untuk deskripsi jenis data dan konversi jenis data EXTENDED Store Procedure API, lihat Jenis Data (EXTENDED Stored Procedure API).

Fungsi srv_convert dapat gagal karena beberapa alasan:

  • Konversi yang diminta tidak tersedia.

  • Konversi mengakibatkan pemotongan, luapan, atau hilangnya presisi dalam variabel tujuan.

  • Terjadi kesalahan sintaks saat mengonversi string karakter menjadi jenis data numerik.

Penting

Anda harus meninjau kode sumber prosedur tersimpan yang diperluas secara menyeluruh, dan Anda harus menguji DLL yang dikompilasi sebelum menginstalnya di server produksi. Untuk informasi tentang peninjauan dan pengujian keamanan, lihat situs Web Microsoft ini.

Lihat Juga

srv_setutype (EXTENDED Stored Procedure API)
srv_willconvert (EXTENDED Stored Procedure API)