Verileri tablo biçiminde parametreleri ekleme
The SQL Server Native istemci OLE DB sağlayıcı supports two models for the consumer to specify data for tablo valued parameter rows: bir gönderme modeli ve bir çekme modeli. Çekme modeli gösteren bir örnek kullanılabilir olur.Daha fazla bilgi için bkz:SQL Server Örnekleri ve Örnek Veritabanlarının Yüklenmesiyle İlgili Önemli Noktalar.
Not
Parametre tablo değerli bir sütun, tüm satırlar için varsayılan değerler ya da tüm satırların varsayılan olmayan değerleri olması gerekir.Bazı satırlar, ancak diğerleri değil de varsayılan değerlerine sahip olanaklı değildir.Bu nedenle, tablo değerli parametre bağlantılarında, tablo değerli parametresi için değerler yalnızca durum izin satır kümesi DBSTATUS_S_ISNULL ve DBSTATUS_S_OK sütun veridir.DBSTATUS_S_DEFAULT içinde bir hata neden olur ve ilişkili bir durumu değeri için DBSTATUS_E_BADSTATUS küme.
(Bellekteki tüm tablo biçiminde Paremeter veri yükler) modeli itin.
gönderme modelini parametre kümesi (yani DBPARAMS parametresinde kullanımını benzer ICommand::Execute). Tablo değerli parametre kümesi nesneleri bir özelleştirilmiş uygulaması kullanılıyorsa, yalnızca gönderme modeli kullanılır IRowset arabirimler. Tablo değerli parametre kümesi içindeki satır kümesi kümesi sayısını, küçük ve aşırı bellek baskısı uygulamaya koymak için beklenen gönderme modeli önerilir.Tipik bir OLE DB uygulamalarda şu anda ortak nedir'den herhangi bir daha fazla işlevsellik tüketici uygulamadan gerektirdiği için bu çekme modeli kolaydır.
Tüketici tüm parametre tablo değerli verileri, bir komutu yürütmeden önce sağlayıcıya sağlamak için bekleniyor.Veri sağlamak için , tablo değerli her parametre için parametre tablo değerli bir satır kümesi nesnesi tüketici doldurur.Tablo değerli parametre kümesi sunar, Ekle, satır kümesi nesnesi kümesi ve tüketici parametreyi tablo değerli verileri işlemek için kullanacağı işlemleri Sil.Sağlayıcı bu yürütülmesi sırasında parametre tablo değerli satır kümesi kümesi nesnesinden veri alıp.
Tüketici parametre tablo değerli bir satır kümesi nesnesi tüketiciye sağlandığında bir satır kümesi nesnesi olarak işleyebilir.Tüketici (tür en fazla uzunluk, duyarlık ve ölçek), her sütunun tür bilgileri kullanarak elde edebilirsiniz IColumnsInfo::GetColumnInfo veya IColumnsRowset::GetColumnsRowset arabirim yöntem. Tüketici, daha sonra veri bağlamaları belirtmek için bir erişimci oluşturur.Sonraki adım, tablo değerli parametre satır kümesi kümesi veri satırları eklemektir.This can be done by using IRowsetChange::InsertRow.IRowsetChange::SetData or IRowsetChange::DeleteRows can also be used on the table-valued parameter rowset object if you have to manipulate the data.Tablo değerli parametre satır kümesi başvurusu, akış nesnelerine benzer sayılan nesneler kullanılabilir.
If IColumnsRowset::GetColumnsRowset ise, kullanılan olacak sonraki çaðrýlar IRowset::GetNextRows, IRowset::GetData, ve IRowset::ReleaseRows Sonuç, satır kümesi nesnesi üzerinde yöntem sütun.
Sonra SQL Server Komutu yürütmeden yerel istemci OLE DB sağlayıcı başlar, bu tablo değerli parametre tablo değerli parametre değerlerini getirilen satır kümesi nesne ve sunucuya gönderilir.
gönderme modelini için tüketicinin en az bir iş gerektiriyor, ancak bu parametre tablo değerli veri olduğundan bellekte yürütme çekme modeli, daha fazla bellek kullandığı saat.
Model (isteğe bağlı tablo biçiminde parametre veri tüketici alma) çeker.
Çekme modeli iki senaryolarda yararlıdır:
Akış satırları için.
satır kümesi başka bir sağlayıcıdan gelen tablo değerli bir parametre değeri olarak kullanılıyorsa.
Çekme modelinde, tüketici sağlayıcı için isteğe bağlı veriler sağlar.Uygulamanızda birçok veri ekleme ve tablo değerli bir parametresi varsa, bu yaklaşımı kullanmak satır kümesi verileri bellekte aşırı bellek erişimi olacak.Tüketici çekme modeli, birden çok OLE DB sağlayıcısı kullanılıyorsa, tüketici herhangi bir satır kümesi nesnesi tablo değerli bir parametre değeri olarak sağlamak etkinleştirir.
Çekme modeli kullanmak için , tüketicilerin kendi uygulaması sağlamak zorunda bir satır kümesi nesne.Çekme modeli (CLSID_ROWSET_TVP) tablo değerli parametre satır kümesi kümesi kümeleri ile birlikte kullanıldığında, tüketici sağlayıcı aracılığıyla kullanıma sunar tablo değerli parametre kümesi nesnesi toplamak için gereklidir ITableDefinitionWithConstraints::CreateTableWithConstraints yöntem veya IOpenRowset::OpenRowset yöntem. Yalnızca ırowset arabirim uygulaması geçersiz kılmak için tüketici nesnesi bekleniyordu.Aşağıdaki işlevler kılmalıdır:
IRowset::GetNextRows
IRowset::AddRefRows
IRowset::GetData
IRowset::ReleaseRows
IRowset::RestartPosition
SQL Server Yerel istemci OLE DB sağlayıcı bir veya daha çok satır aynı anda tüketici tablo değerli parametrelerinde akış davranışını desteklemek için satır kümesi nesnesi okuyacaktır.Örneğin, kullanıcı tablo değerli parametresi olabilir satır kümesi (bellekte değil) diskindeki verileri ve işlevselliği için gereken diskten veri okumak için SQL Server Yerel istemci OLE DB sağlayıcı.
Tüketici, veri biçimine iletişim kurar SQL Server Yerel istemci OLE DB kullanarak sağlayıcı IAccessor::CreateAccessor tablo değerli parametre kümesi nesnede. Tüketici arabelleğinden verileri okunurken, sağlayıcı doğrular: tüm yazılabilir ve varsayılan olmayan sütunları en az bir erişimci tanıtıcı kullanılabilir ve ilgili tanıtıcıları sütun veri okumak için kullanır.Belirsizlik önlemek için , bulunmalıdır parametre tablo değerli bir satır kümesi sütun ve bağlama arasında bire bir Yazışma.Aynı sütuna yinelenen bağlamaları, hataya neden olur.Ayrıca, her erişimcisine sahip beklenen iOrdinal üyesi DBBindings sırada. Çok çağrı olacaktır IRowset::GetData satır başına erişimcileri sayısını ve arama sırası sırasını temel alır iOrdinal daha yüksek için düşük değerler değeri.
Sağlayıcı parametre tablo değerli satır kümesi nesnesi tarafından gösterilen arabirim çoğunu bekleniyordu.Tüketici, en az bir arabirim (bir satır kümesi nesnesi gerçekleştireceksinizIRowset). Kör toplama nedeniyle, kalan zorunlu bir satır kümesi nesnesi arabirimleri tablo değerli parametre kümesi nesnesi tarafından uygulanan.
Tüm diğer satır kümesi gibi bir nesne için OLE DB sağlayıcı, alınan bir satır kümesi nesneleri için Tüketici tarafından sağlanan satır kümesi, OLE DB belirtiminde belirtilen tüm zorunlu bir satır kümesi nesnesi arabirimleri uygulamalıdır.
Yürütme saat SQL Server Yerel istemci OLE DB sağlayıcı, satırlarını alması ve sütun veri okumak için satır kümesi nesnesine geri çağırır.