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.