Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Embora os consumidores possam fornecer qualquer objeto de conjunto de linhas para parâmetros com valores de tabela, os objetos típicos de conjunto de linhas são implementados contra armazenamentos de dados do back-end e, por isso, proporcionam desempenho limitado. Por esta razão, o SQL Server Native Client OLE DB Provider permite aos consumidores criar um objeto especializado em conjunto de linhas sobre dados em memória. Este objeto especial de conjunto de linhas em memória é um novo objeto COM chamado conjunto de linhas de parâmetros com valores de tabela . Fornece funcionalidades semelhantes a conjuntos de parâmetros.
Os objetos de conjunto de linhas de parâmetros com valores de tabela são criados explicitamente pelo consumidor para parâmetros de entrada através de múltiplas interfaces ao nível da sessão. Existe uma instância de um objeto conjunto de linhas com valor de tabela por parâmetro com valor de tabela. O consumidor pode criar os objetos do conjunto de linhas de parâmetros com valores de tabela fornecendo informação de metadados já conhecida (cenário estático), ou descobrindo-a através de interfaces de fornecedores (cenário dinâmico). As secções seguintes descrevem estes dois cenários.
Cenário Estático
Quando a informação do tipo é conhecida, o consumidor usa ITableDefinitionWithConstraints::CreateTableWithConstraints para instanciar um objeto de conjunto de linhas de parâmetros com valor de tabela que corresponde a um parâmetro com valor de tabela.
O campo guid (parámetro pTableID ) contém o GUID especial (CLSID_ROWSET_TVP). O membro pwszName contém o nome do tipo de parâmetro com valores de tabela que o consumidor pretende instanciar. O campo eKind será definido para DBKIND_GUID_NAME. Este nome é necessário quando a instrução é SQL ad hoc; o nome é opcional se for uma chamada de procedimento.
Para agregação, o consumidor passa o parâmetro pUnkOuter com o IUnknown de controlo.
As propriedades do objeto do conjunto de linhas com valor de tabela são apenas leitura, pelo que o consumidor não é esperado que defina quaisquer propriedades em rgPropertySets.
Para o membro rgPropertySets de cada estrutura DBCOLUMNDESC, o consumidor pode especificar propriedades adicionais para cada coluna. Estas propriedades pertencem ao conjunto de propriedades DBPROPSET_SQLSERVERCOLUMN. Permitem-te especificar as definições computadas e predefinidas para cada coluna. Também suportam propriedades de coluna existentes, como nulidade e identidade.
Para recuperar informação correspondente de um objeto de conjunto de parâmetros com valores de tabela, o consumidor utiliza IRowsetInfo::GetProperties.
Para obter informações sobre o estado nulo, único, computado e de atualização de cada coluna, o consumidor utiliza IColumnsRowset::GetColumnsRowset ou IColumnsInfo::GetColumnInfo. Estes métodos fornecem informação detalhada sobre cada coluna de conjunto de linhas de parâmetros com valores de tabela.
O consumidor especifica o tipo de cada coluna do parâmetro com valor na tabela. Isto é semelhante à forma como as colunas são especificadas quando uma tabela é criada no SQL Server. O consumidor obtém um objeto de conjunto de linhas de parâmetros com valores de tabela do SQL Server Native Client OLE DB Provider através do parâmetro de saída ppRowset.
Cenário Dinâmico
Quando o consumidor não tem informação de tipos, deve usar IOpenRowset::OpenRowset para instanciar objetos de linhas de parâmetros com valores de tabela. Tudo o que o consumidor tem de fornecer ao fornecedor é o nome do tipo.
Neste cenário, o fornecedor obtém informação de tipo sobre um objeto de conjunto de linhas de parâmetros com valores de tabela do servidor em nome do consumidor.
Os parâmetros pTableID e pUnkOuter devem ser definidos como no cenário estático. O SQL Server Native Client OLE DB Provider obtém então a informação de tipo (informação de colunas e restrições) do servidor e devolve um objeto de conjunto de linhas de parâmetros com valor de tabela através do parâmetro ppRowset. Esta operação requer comunicação com o servidor e, por isso, não funciona tão bem como o cenário estático. O cenário dinâmico funciona apenas com chamadas de procedimentos parametrizados.