Büyük clr kullanıcı tanımlı türler (odbc)
Bu konu, odbc SQL Server yerel istemci büyük ortak dil çalışma zamanı (clr) kullanıcı tanımlı türler (UDTs) desteklemek için değişiklikler açıklanır.
Büyük clr UDTs için odbc desteği gösteren bir örnek için bkz: Büyük UDTs desteği.
SQL Server yerel istemci 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 formatı
SQL Server yerel istemci SQL_SS_LENGTH_UNLIMITED bir sütunun boyutunu büyük nesne (lob) türleri için 8.000 bayttan daha büyük göstermek için kullanır. SQL Server 2008 ile başlayarak, değerin, büyüklükleri 8.000 bayttan daha büyük olduğunda, clr UDTs için kullanılır.
udt değerleri bayt dizileri temsil edilir. Dönüşümler ve gelen onaltılık dizeleri desteklenir. Hazır bilgi değerleri onaltılık dize "0 x" önekine sahip olarak temsil edilir.
Aşağıdaki tabloda veri türü eşleştirme parametreleri ve sonuç kümelerini gösterir:
SQL Server veri türü |
veri türü. |
Değer |
---|---|---|
CLR UDT |
SQL_SS_UDT |
-151 (sqlncli.h) |
Aşağıdaki tabloda karşılık gelen yapı ve odbc c türü açıklanır. Esasen, clr udt ise bir varbinaryek meta veri türüyle.
veri türü. |
Bellek düzeni |
C veri türü |
Değer (sqlext.h) |
---|---|---|---|
SQL_SS_UDT |
sqlchar *(unsigned char *) |
SQL_C_BINARY |
SQL_BINARY (-2) |
Tanımlayıcı alanları için parametreleri
IPD 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_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 adı. |
udt tam adı. |
udt parametreleri için sql_ca_ss_udt_type_name her zaman aracılığıyla ayarlanmalıdır SQLSetDescField. sql_ca_ss_udt_catalog_name ve sql_ca_ss_udt_schema_name isteğe bağlıdır.
udt Tablo'den farklı bir şema ile aynı veritabanında tanımlı, sql_ca_ss_udt_schema_name ayarlanmış olması gerekir.
udt Tablo'den farklı bir veritabanında tanımlı, sql_ca_ss_udt_catalog_name ve sql_ca_ss_udt_schema_name ayarlanmış olması gerekir.
Eğer herhangi bir hata veya eksikliklerden sql_ca_ss_udt_type_name, sql_ca_ss_udt_catalog_name veya sql_ca_ss_udt_schema_name ayarlarında, tanılama kaydı sqlstate HY000 ve sunucuya özel ileti metni ile oluşturulur.
Sonuçları tanımlayıcısı alanlar
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 adı. |
udt tam 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 adı. |
udt tam adı. |
Son üç sütun sürücüye özgü sütunları olan. Bunlar, ama sonuç kümesi herhangi bir varolan sürücüye özgü sütunları önce sonra herhangi bir odbc tanımlı sütunlar eklenir SQLColumnsya SQLProcedureColumns.
Hiçbir satır tarafından döndürülen SQLGetTypeInfo, tek tek UDTs veya genel bir tür "udt".
Bağlama ve Dönüşümlerini
SQL desteklenen dönüştürmeleri c veri türleri aşağıdaki gibidir:
Dönüşüm 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.
C desteklenen dönüştürmeleri için sql veri türleri aşağıdaki gibidir:
Dönüşüm ve: |
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_varıant 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 aşağı düzey istemciler, türü eşleştirmesi için şunlardır:
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 2005 |
UDT |
varbinary(max) |
SQL Server 2008 ve sonrası |
UDT |
UDT |
Büyük clr UDTs desteklemek odbc işlevleri
Bu bölümde, büyük clr UDTs desteklemek için SQL Server yerel istemci odbc işlevleri değişiklikler açıklanır.
SQLBindCol
udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" açıklandığı gibi dönüştürülür bölümünde, bu konuda.
SQLBindParameter
UDTs için gerekli değerler aşağıdaki gibidir:
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ı" açıklandığı gibi değerlerdir 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)" konusunda açıklandığı gibi değerlerdir bölümünde, bu konuda.
SQLDescribeCol
UDTs için döndürülen değerler aşağıdaki gibidir:
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:
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" açıklandığı gibi dönüştürülür 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" açıklandığı gibi dönüştürülür bölümünde, bu konuda.
SQLGetData
udt sonuç sütun değerlerini sql c veri türleri "bağlar ve Dönüşümlerini içinde" açıklandığı gibi dönüştürülür 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ı" bölümlere, bu konuda.
SQLGetDescRec
UDTs için döndürülen değerler aşağıdaki gibidir:
veri türü. |
Tür |
Alt tür |
Uzunluk |
Hassas |
Ö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 "SQLColumns ve SQLProcedureColumns (katalog meta veri) tarafından iade meta verileri" bölümünde açıklandığı gibi değerlerdir bölümünde, bu konuda.
SQLProcedureColumns
UDTs için döndürülen "SQLColumns ve SQLProcedureColumns (katalog meta veri) tarafından iade meta verileri" bölümünde açıklandığı gibi değerlerdir bölümünde, bu konuda.
SQLPutData
udt parametre değerleri c sql veri türleri "bağlar ve Dönüşümlerini içinde" açıklandığı gibi dönüştürülür bölümünde, bu konuda.
SQLSetDescField
Yeni türleriyle kullanılabilir alan tanımlayıcısı açıklanan "tanımlayıcı alanları için parametreleri" ve "Tanımlayıcı alanlar için sonuçları" bölümlere, bu konuda.
SQLSetDescRec
UDTs için izin verilen değerler aşağıdaki gibidir:
veri türü. |
Tür |
Alt tür |
Uzunluk |
Hassas |
Ö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ğerleri sütunlar için data_type, type_name COLUMN_SIZE buffer_length ve DECIMAL_DIGTS UDTs SQLColumns ve SQLProcedureColumns (katalog meta veri) tarafından "meta verileri iade" konusunda açıklandığı gibi döndürülür bölümünde, bu konuda.