Büyük CLR kullanıcı tanımlı türler (ODBC)
Bu konuda, ODBC SQL Server yerel olarak yapılan anlatılmaktadır istemci büyük ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türler (UDTs) desteklemek için.
Yerel SQL Server istemcisindeki büyük CLR UDTs desteği hakkında daha fazla bilgi için bkz: Büyük CLR kullanıcı tanımlı türler.
Veri Biçimlendir
SQL Server yerel istemci SQL_SS_LENGTH_UNLIMITED sütun boyutunu büyük bir nesne (LOB) türleri için 8.000 bayttan büyük olduğunu belirtmek için kullanır.Büyüklükleri 8.000 bayttan büyük olduğunda, SQL Server 2008 ile başlayarak, CLR UDTs için aynı değeri kullanılır.
UDT değerleri bayt dizi olarak gösterilir.Dönüşümler ve onaltılık dizeleri desteklenir.Hazır bilgi değerleri, "0 x" içeren hex dizesi olarak temsil edilir.
Aşağıdaki tablo gösterir veri eşleme parametreleri yazın ve ayarlar neden:
SQL Server veri türü |
SQL veri türü |
Değer |
---|---|---|
clr udt |
sql_ss_udt |
-151 (sqlncli.h) |
Aşağıdaki tabloda karşılık gelen yapısı ve ODBC C türü anlatılır.Aslında, CLR UDT olan bir varbinary ek meta veriler dosyasıyla yazın.
SQL veri türü |
Bellek yerleşimi |
c veri türü |
Değer (sqlext.h) |
---|---|---|---|
sql_ss_udt |
SQLCHAR *(unsigned char *) |
sql_c_binary |
sql_binary (-2) |
Parametreler için tanımlayıcı alanları
IPD alanlarda verilen bilgileri aşağıdaki gibidir:
Tanımlayıcı alan |
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
---|---|---|
sql_desc_case_sensitive |
sql_false |
sql_false |
sql_desc_concise_type |
sql_ss_udt |
sql_ss_udt |
sql_desc_datetime_interval_code |
0 |
0 |
sql_desc_datetime_interval_precision |
n |
sql_ss_length_unlimited (0) |
sql_desc_fixed_prec_scale |
sql_false |
sql_false |
sql_desc_length |
n |
sql_ss_length_unlimited (0) |
sql_desc_local_type_name |
"udt" |
"udt" |
sql_desc_octet_length |
n |
sql_ss_length_unlimited (0) |
sql_desc_precision |
n |
sql_ss_length_unlimited (0) |
sql_desc_scale |
0 |
0 |
sql_desc_type |
sql_ss_udt |
sql_ss_udt |
sql_desc_type_name |
"udt" |
"udt" |
sql_desc_unsigned |
sql_true |
sql_true |
sql_ca_ss_udt_catalog_name |
UDT içeren bir katalog adı. |
UDT içeren bir katalog adı. |
sql_ca_ss_udt_schema_name |
UDT içeren şemanın adı. |
Şema adı UDT içerir. |
sql_ca_ss_udt_type_name |
UDT adıdır. |
UDT adıdır. |
sql_ca_ss_udt_assembly_type_name |
UDT tam adı. |
UDT tam adı. |
UDT parametreleri için her zaman SQL_CA_SS_UDT_TYPE_NAME olması küme yoluyla SQLkümeDescField.SQL_CA_SS_UDT_CATALOG_NAME ve SQL_CA_SS_UDT_SCHEMA_NAME isteğe bağlıdır.
Tablo'den farklı bir şema ile aynı veritabanında UDT tanımlıysa, SQL_CA_SS_UDT_SCHEMA_NAME küme olması gerekir.
Veritabanından tablo farklı veritabanı UDT tanımlıysa SQL_CA_SS_UDT_CATALOG_NAME ve SQL_CA_SS_UDT_SCHEMA_NAME olmalıdır küme.
Hataları ve atlamalar SQL_CA_SS_UDT_TYPE_NAME, SQL_CA_SS_UDT_CATALOG_NAME veya SQL_CA_SS_UDT_SCHEMA_NAME ayarlarında varsa, tanılama kayıt SQLSTATE HY000 ve sunucuya özel ileti metni ile oluşturulur.
Tanımlayıcı alanlar için sonuçlar
IRD alanlarda verilen bilgileri aşağıdaki gibidir:
Tanımlayıcı alan |
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
---|---|---|
sql_desc_auto_unique_value |
sql_false |
sql_false |
sql_desc_case_sensitive |
sql_false |
sql_false |
sql_desc_concise_type |
sql_ss_udt |
sql_ss_udt |
sql_desc_datetime_interval_code |
0 |
0 |
sql_desc_datetime_interval_precision |
n |
sql_ss_length_unlimited (0) |
sql_desc_display_size |
2n |
sql_ss_length_unlimited (0) |
sql_desc_fixed_prec_scale |
sql_false |
sql_false |
sql_desc_length |
n |
sql_ss_length_unlimited (0) |
sql_desc_literal_prefix |
"0 x" |
"0 x" |
sql_desc_literal_suffix |
"" |
"" |
sql_desc_local_type_name |
"udt" |
"udt" |
sql_desc_octet_length |
n |
sql_ss_length_unlimited (0) |
sql_desc_precision |
n |
sql_ss_length_unlimited (0) |
sql_desc_scale |
0 |
0 |
sql_desc_searchable |
sql_pred_none |
sql_pred_none |
sql_desc_type |
sql_ss_udt |
sql_ss_udt |
sql_desc_type_name |
"udt" |
"udt" |
sql_desc_unsigned |
sql_true |
sql_true |
sql_ca_ss_udt_catalog_name |
UDT içeren bir katalog adı. |
UDT içeren bir katalog adı. |
sql_ca_ss_udt_schema_name |
UDT içeren şemanın adı. |
UDT içeren şemanın adı. |
sql_ca_ss_udt_type_name |
UDT adıdır. |
UDT adıdır. |
sql_ca_ss_udt_assembly_type_name |
UDT tam adı. |
UDT tam adı. |
SQLColumns ve SQLProcedureColumns (katalog meta veriler) tarafından döndürülen sütun meta verileri
Aşağıdaki sütun değerleri için UDTs döndürülür:
Sütun adı |
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
---|---|---|
data_type |
sql_ss_udt |
sql_ss_udt |
type_name |
UDT adıdır. |
UDT adıdır. |
column_size |
n |
sql_ss_length_unlimited (0) |
buffer_length |
n |
sql_ss_length_unlimited (0) |
decimal_digits |
null |
null |
sql_data_type |
sql_ss_udt |
sql_ss_udt |
sql_datetime_sub |
null |
null |
char_octet_length |
n |
sql_ss_length_unlimited (0) |
ss_udt_catalog_name |
UDT içeren bir katalog adı. |
UDT içeren bir katalog adı. |
ss_udt_schema_name |
UDT içeren şemanın adı. |
UDT içeren şemanın adı. |
ss_udt_assembly_type_name |
UDT tam adı. |
UDT tam adı. |
Son üç sütun, sürücüye özgü sütun var.ODBC tanımlı sütunları sonra ancak önce varolan sürücüye özgü tüm sonuç kümesi sütunlarından eklenir SQLColumns veya SQLProcedureColumns.
Tarafından döndürülen satır yok SQLGetTypeInfo, tek tek UDTs ya da "udt" genel türü.
Bağlama ve dönüşümlerini
C veri türleri için "SQL tarafından desteklenen dönüşümler aşağıdaki gibidir:
Dönüştürme ve: |
sql_ss_udt |
---|---|
sql_c_wchar |
Desteklenen * |
sql_c_binary |
Desteklenen |
sql_c_char |
Desteklenen * |
* Ikili veri, onaltılık dize dönüştürülür.
SQL veri türleri için "c desteklenen dönüşümler aşağıdaki gibidir:
Dönüştürme ve: |
sql_ss_udt |
---|---|
sql_c_wchar |
Desteklenen * |
sql_c_binary |
Desteklenen |
sql_c_char |
Desteklenen * |
* Ikili veri dönüştürme onaltılık dize oluşur.
UDTs SQL_VARIANT desteği
UDTs SQL_VARIANT sütunlarda desteklenmez.
UDTs BCP desteği
UDTs değerleri içe ve yalnızca karakter veya ikili değerler dışarı.
Alt düzey istemci davranışı UDTs için
UDTs türü eşleştirmeyle tabidir kapalı-istemcileri gibi düzey:
Sunucu sürüm |
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
---|---|---|
SQL Server 2000 |
varbinary |
image |
SQL Server 2005 |
UDT |
varbinary(max) |
SQL Server 2008 |
UDT |
UDT |
ODBC destekleyen büyük bir CLR UDTs işlevleri
Bu bölüm, büyük bir CLR UDTs desteklemek için SQL Server yerel istemci ODBC işlevlerine yapılan değişiklikler açıklanır.
SQLBindCol
UDT sonuç sütun değerlerini SQL "Bağlar ve Dönüşümlerini" bölümünde, bu konuda daha önce açıklandığı gibi C veri türleri dönüştürülür.
SQLBindParameter
UDTs için gerekli değerler aşağıdaki gibidir:
SQL veri türü |
Parametertype |
ColumnSizePtr |
DecimalDigitsPtr |
---|---|---|---|
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt |
n |
0 |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
sql_ss_udt |
sql_ss_length_unlimited (0) |
0 |
SQLColAttribute
Için UDTs döndürdü "sonuçlar için tanımlayıcı alanları" bölümünde, bu konuda daha önce açıklandığı gibi değerlerdir.
SQLColumns
Için UDTs döndürdü "Sütun meta veri iade SQLColumns ve SQLProcedureColumns (katalog meta veriler)" bölümünde, bu konuda daha önce açıklandığı gibi değerlerdir.
SQLDescribeCol
UDTs için döndürülen değerler aşağıdaki gibidir:
SQL veri türü |
DataTypePtr |
ColumnSizePtr |
DecimalDigitsPtr |
---|---|---|---|
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt |
n |
0 |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
sql_ss_udt |
sql_ss_length_unlimited (0) |
0 |
SQLDescribeParam
UDTs için döndürülen değerler aşağıdaki gibidir:
SQL veri türü |
DataTypePtr |
ColumnSizePtr |
DecimalDigitsPtr |
---|---|---|---|
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt |
n |
0 |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
sql_ss_udt |
sql_ss_length_unlimited (0) |
0 |
SQLFetch
UDT sonuç sütun değerlerini SQL "Bağlar ve Dönüşümlerini" bölümünde, bu konuda daha önce açıklandığı gibi C veri türleri dönüştürülür.
SQLFetchScroll
UDT sonuç sütun değerlerini SQL "Bağlar ve Dönüşümlerini" bölümünde, bu konuda daha önce açıklandığı gibi C veri türleri dönüştürülür.
SQLGetData
UDT sonuç sütun değerlerini SQL "Bağlar ve Dönüşümlerini" bölümünde, bu konuda daha önce açıklandığı gibi C veri türleri dönüştürülür.
SQLGetDescField
Yeni türleriyle kullanılabilir alan tanımlayıcısı "Parametreler için tanımlayıcı alanları" ve "sonuçlar için tanımlayıcı alanları" bölümünde, bu konuda daha önce açıklanmıştır.
SQLGetDescRec
UDTs için döndürülen değerler aşağıdaki gibidir:
SQL veri türü |
Tür |
Alt tür |
Uzunluk |
Duyarlık |
Ölçek |
---|---|---|---|---|---|
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt |
0 |
n |
n |
0 |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
sql_ss_udt |
0 |
sql_ss_length_unlimited (0) |
sql_ss_length_unlimited (0) |
0 |
Sqlgettypeınfo
Için UDTs döndürdü "Meta veri SQLColumns ve SQLProcedureColumns (katalog meta veriler) tarafından döndürülen" bölümünde, bu konuda daha önce açıklandığı gibi değerlerdir.
SQLProcedureColumns
Için UDTs döndürdü "Meta veri SQLColumns ve SQLProcedureColumns (katalog meta veriler) tarafından döndürülen" bölümünde, bu konuda daha önce açıklandığı gibi değerlerdir.
SQLPutData
UDT parametre değerleri C ' "Bağlar ve Dönüşümlerini" bölümünde, bu konuda daha önce açıklandığı gibi SQL veri türleri dönüştürülür.
SQLSetDescField
Yeni türleriyle kullanılabilir alan tanımlayıcısı "Parametreler için tanımlayıcı alanları" ve "sonuçlar için tanımlayıcı alanları" bölümünde, bu konu içinde açıklanmıştır.
SQLSetDescRec
UDTs için izin verilen değerler aşağıdaki gibidir:
SQL veri türü |
Tür |
Alt tür |
Uzunluk |
Duyarlık |
Ölçek |
---|---|---|---|---|---|
sql_ss_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
sql_ss_udt |
0 |
n |
n |
0 |
sql_ss_udt (uzunluğu 8.000 bayttan büyük) |
sql_ss_udt |
0 |
sql_ss_length_unlimited (0) |
sql_ss_length_unlimited (0) |
0 |
SQLSpecialColumns
Değerler, "Meta veri SQLColumns ve SQLProcedureColumns (katalog meta veriler) tarafından döndürülen" bölümünde, bu konuda daha önce açıklandığı gibi DATA_TYPE, TYPE_NAME COLUMN_SIZE BUFFER_LENGTH ve DECIMAL_DIGTS UDTs olan sütunlar için döndürdü.