Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Chociaż konsumenci mogą udostępnić dowolny obiekt wiersza dla parametrów tabelowych, typowe obiekty wierszy są implementowane na tle magazynów danych, co zapewnia ograniczoną wydajność. Z tego powodu SQL Server Native Client OLE DB Provider umożliwia konsumentom tworzenie specjalistycznego obiektu wierszowego na podstawie danych w pamięci. Ten specjalny, w pamięci obiekt wiersza to nowy obiekt COM zwany tabelowym zestawem parametrów . Zapewnia funkcjonalność podobną do zestawów parametrów.
Obiekty wierszy o wartości tabelowej są tworzone jawnie przez użytkownika dla parametrów wejściowych za pomocą wielu interfejsów na poziomie sesji. Istnieje jedna instancja obiektu wiersza o wartości tabelowej dla każdego parametru tabelowego. Konsument może tworzyć obiekty wierszy o wartości tabelowej parametrów, podając już znane metadane (scenariusz statyczny) lub odkrywając je za pomocą interfejsów dostawców (scenariusz dynamiczny). Poniższe sekcje opisują te dwa scenariusze.
Scenariusz statyczny
Gdy informacje o typie są znane, konsument używa ITableDefinitionWithConstraints::CreateTableWithConstraints do instancji obiektu wiersza o wartości tabelowej, który odpowiada parametrowi tabelowemu.
Pole guid (parametr pTableID ) zawiera specjalny GUID (CLSID_ROWSET_TVP). Członek pwszName zawiera nazwę typu parametru o wartości tabelowej, który użytkownik chce zinstancjonować. Pole eKind będzie ustawione na DBKIND_GUID_NAME. Ta nazwa jest wymagana, gdy polecenie jest ad hoc SQL; nazwa jest opcjonalna, jeśli jest to wywołanie procedury.
Dla agregacji konsument przekazuje parametr pUnkOuter z kontrolującym IUnknown.
Właściwości obiektu wiersza o wartości tabelowej są tylko do odczytu, więc od konsumenta nie oczekuje się ustawiania żadnych właściwości w rgPropertySets.
Dla członka rgPropertySets każdej struktury DBCOLUMNDESC konsument może określić dodatkowe właściwości dla każdej kolumny. Te własności należą do zbioru DBPROPSET_SQLSERVERCOLUMN własności. Pozwalają one określić obliczane i domyślne ustawienia dla każdej kolumny. Obsługują także istniejące właściwości kolumnowe, takie jak nieważność i tożsamość.
Aby pobrać odpowiadające informacje z obiektu wiersza o wartości tabelowej, konsument używa IRowsetInfo::GetProperties.
Aby uzyskać informacje o statusie null, unique, obliczenia i aktualizacji każdej kolumny, konsument używa IColumnsRowset::GetColumnsRowset lub IColumnsInfo::GetColumnInfo. Metody te dostarczają szczegółowych informacji o każdej kolumnie wiersza z parametrami tabelowymi.
Konsument określa typ każdej kolumny parametru tabelowego. Jest to podobne do tego, jak kolumny są określane podczas tworzenia tabeli w SQL Server. Konsument otrzymuje obiekt wiersza o wartości tabelowej od dostawcy danych SQL Server Native Client OLE DB za pomocą parametru wyjściowego ppRowset.
Scenariusz dynamiczny
Gdy konsument nie posiada informacji o typie, powinien użyć IOpenRowset::OpenRowset do instancji obiektów wiersza o wartości tabelowej. Konsument musi dostarczyć jedynie nazwę typu.
W tym scenariuszu dostawca otrzymuje informacje o typie obiektu wiersza o wartości tabelowej od serwera w imieniu konsumenta.
Parametry pTableID i pUnkOuter powinny być ustawione tak, jak w scenariuszu statycznym. Provider natywnego klienta OLE DB SQL Server pobiera następnie informacje o typie (informacje o kolumnach i ograniczeniach) od serwera i zwraca obiekt wiersza o wartości tabelowej przez parametr ppRowset. Ta operacja wymaga komunikacji z serwerem, dlatego nie działa tak dobrze jak statyczny scenariusz. Scenariusz dynamiczny działa tylko z parametryzowanymi wywołaniami procedur.