Aracılığıyla paylaş


Büyük clr kullanıcı tanımlı türler (odbc)

Bu konuda, odbc sql Server yerel büyük ortak dil çalışma zamanı (clr) kullanıcı tanımlı türler (UDTs) desteklemek için istemcisindeki değişiklikler açıklanır.

sql Server yerel İstemcisi'nde büyük clr UDTs için destek hakkında daha fazla bilgi için bkz: Büyük clr kullanıcı tanımlı türler.

Veri biçimi

sql Server yerel istemcisi SQL_SS_LENGTH_UNLIMITED bir sütun boyutunun büyük nesne (lob) türleri için 8000 bayttan daha büyük olduğunu göstermek için kullanır.Büyüklükleri 8000 bayttan daha büyük olduğunda sql Server 2008 ile başlayarak, clr UDTs için aynı değer kullanılır.

udt değerleri bayt dizileri temsil edilir.Dönüşümler ve onaltılık dize gelen desteklenir.Hazır bilgi değerleri "0 x" öneki ile hex dizesi olarak temsil edilir.

Aşağıdaki tablo gösterir veri eşleme parametreleri yazın ve sonuç kümeleri:

sql Server veri türü

sql veri türü

Değer

CLR UDT

SQL_SS_UDT

-151 (sqlncli.h)

Aşağıdaki tablo karşılık gelen yapı ve odbc c türü açıklanır.Aslında, clr udt ise bir varbinary türü ile ek meta veriler.

sql veri türü

Bellek düzeni

C veri türü

Değer (sqlext.h)

SQL_SS_UDT

sqlchar *(unsigned char *)

SQL_C_BINARY

UZUN SQL_BINARY (-2)

Tanımlayıcı alanları için parametreleri

Döndürülen IPD alanlara bilgileri aşağıdaki gibidir:

Alan tanımlayıcısı

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

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 katalog adı.

udt içeren katalog adı.

SQL_CA_SS_UDT_SCHEMA_NAME

udt içeren şema adı.

Şema adı udt içerir.

SQL_CA_SS_UDT_TYPE_NAME

udt adı.

udt adı.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

udt tam nitelikli adı.

udt tam nitelikli adı.

udt parametreleri için her zaman sql_ca_ss_udt_type_name olması küme ile sqlkümeDescField.sql_ca_ss_udt_catalog_name ve sql_ca_ss_udt_schema_name isteğe bağlıdır.

udt bir farklı bir şema ile aynı veritabanında tanımlı olup olmadığını tablo, sql_ca_ss_udt_schema_name küme olabilir.

tablo veritabanından farklı bir veritabanı içinde tanımlanan udt, sql_ca_ss_udt_catalog_name ve sql_ca_ss_udt_schema_name olması gerekir küme.

Herhangi bir hata veya sql_ca_ss_udt_type_name, sql_ca_ss_udt_catalog_name veya sql_ca_ss_udt_schema_name ayarlarında atlamalar varsa, tanılama kaydı sqlstate HY000 ve sunucuya özel ileti metni ile oluşturulur.

Tanımlayıcı alanlar için sonuçları

IRD alanlar döndürülen bilgileri aşağıdaki gibidir:

Alan tanımlayıcısı

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

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 katalog adı.

udt içeren katalog adı.

SQL_CA_SS_UDT_SCHEMA_NAME

udt içeren şema adı.

udt içeren şema adı.

SQL_CA_SS_UDT_TYPE_NAME

udt adı.

udt adı.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

udt tam nitelikli adı.

udt tam nitelikli adı.

SQLColumns ve SQLProcedureColumns (katalog meta veri) tarafından döndürülen sütun meta veri

Aşağıdaki sütun değerleri için UDTs döndürülür:

Sütun adı

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

DATA_TYPE

SQL_SS_UDT

SQL_SS_UDT

TYPE_NAME

udt adı.

udt adı.

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 katalog adı.

udt içeren katalog adı.

SS_UDT_SCHEMA_NAME

udt içeren şema adı.

udt içeren şema adı.

SS_UDT_ASSEMBLY_TYPE_NAME

udt tam nitelikli adı.

udt tam nitelikli adı.

Son üç sütun sürücüye özgü sütunları olan.odbc tanımlı sütunlar yaptıktan sonra ancak varolan tüm sürücüye özgü sütunları önce eklenen sonuç küme , SQLColumns veya SQLProcedureColumns.

Hiçbir satır tarafından döndürülen SQLGetTypeInfo, tek tek UDTs için mi "udt" genel türü.

Bağlama ve Dönüşümlerini

Desteklenen sql gelen dönüştürmeleri c veri türleri için aşağıdaki gibidir:

Gelen ve giden dönüştürme:

SQL_SS_UDT

SQL_C_WCHAR

Desteklenen *

SQL_C_BINARY

Desteklenen

SQL_C_CHAR

Desteklenen *

* İkili veriler için bir onaltılık dönüştürülen dize.

C desteklenen dönüştürmeleri için sql veri türleri aşağıdaki gibidir:

Gelen ve giden dönüştürme:

SQL_SS_UDT

SQL_C_WCHAR

Desteklenen *

SQL_C_BINARY

Desteklenen

SQL_C_CHAR

Desteklenen *

* Onaltılık dize ikili veri dönüştürme gerçekleşir.

UDTs SQL_VARIANT desteği

UDTs SQL_VARIANT sütunlarda desteklenmez.

UDTs için bcp desteği

UDTs değerleri alınan ve yalnızca karakter veya ikili değerler verilebilir.

UDTs için alt düzey istemci davranışı

UDTs olan türü eşlemesi ile tabi kapalı-istemcileri gibi düzey:

Sunucu sürüm

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

SQL Server 2000

varbinary

image

SQL Server 2005

UDT

varbinary(max)

SQL Server 2008

UDT

UDT

Büyük clr UDTs desteklemek odbc işlevleri

Büyük clr UDTs desteklemek için sql Server yerel istemci odbc işlevlerine yapılan değişiklikler bu bölümde anlatılmaktadır.

SQLBindCol

udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" konusunda açıklandığı gibi dönüştürülür önceki bölümünde bu konuda.

SQLBindParameter

UDTs için gerekli değerleri aşağıdaki gibidir:

sql veri türü

Parametertype

ColumnSizePtr

DecimalDigitsPtr

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

n

0

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

SQL_SS_UDT

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLColAttribute

UDTs için döndürülen "Tanımlayıcı alanlar için sonuçları" konusunda açıklandığı gibi değerlerdir önceki bölümünde bu konuda.

SQLColumns

UDTs için döndürülen "sütun meta verileri tarafından iade SQLColumns ve SQLProcedureColumns (katalog meta veri)" başlığı altında açıklandığı gibi değerlerdir önceki bölümünde bu konuda.

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ğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

n

0

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

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ğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

n

0

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

SQL_SS_UDT

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLFetch

udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" konusunda açıklandığı gibi dönüştürülür önceki bölümünde bu konuda.

SQLFetchScroll

udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" konusunda açıklandığı gibi dönüştürülür önceki bölümünde bu konuda.

Getirmek için SQLGetData SQLGetData

udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" konusunda açıklandığı gibi dönüştürülür önceki bölümünde bu konuda.

SQLGetDescField

Yeni türleriyle kullanılabilir tanımlayıcısı alanları "tanımlayıcı alanları için parametreleri" açıklanan ve "Tanımlayıcı alanlar için sonuçları" Bu konudaki bölümler.

SQLGetDescRec

UDTs için döndürülen değerler aşağıdaki gibidir:

sql veri türü

Tür

Alt tür

Uzunluk

Precision

Ölçek

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

0

n

n

0

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

SQL_SS_UDT

0

SQL_SS_LENGTH_UNLIMITED (0)

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLGetTypeInfo

UDTs için döndürülen "meta verileri tarafından iade SQLColumns ve SQLProcedureColumns (katalog meta veri)" başlığı altında açıklandığı gibi değerlerdir önceki bölümünde bu konuda.

SQLProcedureColumns

UDTs için döndürülen "meta verileri tarafından iade SQLColumns ve SQLProcedureColumns (katalog meta veri)" başlığı altında açıklandığı gibi değerlerdir önceki bölümünde bu konuda.

SQLPutData

udt parametre değerleri c sql veri türleri "bağlar ve Dönüşümlerini içinde" konusunda açıklandığı gibi dönüştürülür önceki bölümünde bu konuda.

SQLSetDescField

Yeni türleriyle kullanılabilir alan tanımlayıcısı "tanımlayıcı alanları için parametreleri" açıklanan ve "Tanımlayıcı alanlar için sonuçları" Bu konudaki bölümler.

SQLSetDescRec

UDTs için izin verilen değerler aşağıdaki gibidir:

sql veri türü

Tür

Alt tür

Uzunluk

Precision

Ölçek

SQL_SS_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

SQL_SS_UDT

0

n

n

0

SQL_SS_UDT

(8.000 bayttan büyük uzunluğu)

SQL_SS_UDT

0

SQL_SS_LENGTH_UNLIMITED (0)

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLSpecialColumns

Değerlerini sütun için data_type, type_name, COLUMN_SIZE, buffer_length ve DECIMAL_DIGTS UDTs "meta verileri tarafından iade SQLColumns ve SQLProcedureColumns (katalog meta veri)" başlığı altında açıklandığı gibi dönen önceki bölümünde bu konuda.