Aracılığıyla paylaş


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ü.