Compartilhar via


Suporte ao tipo de parâmetro com valor de tabela OLE DB(Métodos)

Os seguintes métodos OLE DB padrão dão suporte a parâmetros com valor de tabela:

Método

Suporte de parâmetro com valor de tabela

ITableDefinitionWithConstraints::CreateTableWithConstraints

Usado quando você conhece as informações de tipo de parâmetro com valor de tabela e deseja criar uma instância de um objeto do conjunto de linhas de parâmetro com valor de tabela baseado na informações do tipo.

Para obter mais informações, consulte “Cenário estático” em Criação do conjunto de linhas do parâmetro com valor de tabela.

IOpenRowset::OpenRowset

Usado quando você não conhece as informações de tipo de um parâmetro com valor de tabela e deseja criar uma instância de um objeto do conjunto de linhas de parâmetro com valor de tabela em informações de metadados recuperadas do servidor.

Para obter mais informações, consulte “Cenário dinâmico” Criação do conjunto de linhas do parâmetro com valor de tabela.

ISSCommandWithParameters::SetParameterInfo

Para especificar um parâmetro de comando do parâmetro com valor de tabela, o consumidor especifica o tipo de parâmetro como “table” ou DBTYPE_TABLE no pwszName membro da estrutura DBPARAMBINDINFO. O ulParamSize é definido como ~0. Para obter mais informações, consulte “Especificação de parâmetros com valor de tabela” em Executando comandos que contêm parâmetros com valor de tabela.

ISSCommandWithParameters::SetParameterProperties

Define as propriedades específicas dos parâmetros com valor de tabela, como nome do esquema, nome de tipo, ordem de coluna e colunas padrão.

O consumidor especifica o ordinal do parâmetro no iOrdinal da estrutura SSPARAMPROPS. O conjunto de propriedades solicitado é DBPROPSET_SQLSERVERPARAMETER.

ISSCommandWithParameters::GetParameterInfo

Obtém os tipos de todos os parâmetros para um comando especificado.

Para parâmetros com valor de tabela, o campo wType na estrutura DBPARAMINFO terá o tipo DBTYPE_TABLE. O campo ulParamSize será definido como ~ 0 para indicar comprimento desconhecido.

ISSCommandWithParameters::GetParameterProperties

Obtém informações de tipo adicionais para parâmetros do tipo DBTYPE_TABLE.

O consumidor especifica o ordinal do parâmetro no membro iOrdinal da estrutura SSPARAMPROPS. O consumidor pode solicitar qualquer propriedade do conjunto de propriedades DBPROPSET_SQLSERVERPARAMETER listado sob ISSCommandWithParameters::SetParameterProperties.

Como o consumidor não conhece o tipo de parâmetro com valor de tabela, o provedor deve definir o SSPROP_PARAM_TYPE_TYPENAME, SSPROP_PARAM_TYPE_SCHEMANAME e SSPROP_PARAM_TYPE_CATALOGNAME com seus valores corretos. As propriedades restantes, SSPROP_PARAM_TABLE_DEFAULT_COLUMNS e SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER, terão seus valores padrão. Depois que o consumidor descobrir o nome do tipo de parâmetro com valor de tabela, ele usará IOpenRowset::OpenRowset para criar uma instância desse parâmetro com valor de tabela especificando o nome do tipo de parâmetro com valor de tabela. Para obter mais informações, consulte Descoberta do tipo de parâmetro com valor de tabela.

IRowsetInfo::GetProperties

Obtém propriedades de conjunto de linhas de parâmetro com valor de tabela. O consumidor pode usar essas propriedades para montar associações de maneira ideal.

IColumnsRowset::GetColumnsRowset

Recupera informações de metadados sobre uma tabela SQL Server. Para parâmetros com valor de tabela, essa mesma interface fornece informações detalhadas de metadados sobre cada coluna, como o seguinte:

  • DBCOLUMN_FLAGS indica nulidade pelo bit de DBCOLUMNFLAGS_ISNULLABLE.

  • DBCOLUMN_ISUNIQUE indica se a coluna é uma coluna de identidade.

  • DBCOLUMN_COMPUTEMODE indica se a coluna é computada.

IAccessor::CreateAccessor

Para associar um objeto de conjunto de linhas de parâmetro com valor de tabela a um parâmetro de comando, crie um acessador com seu membro wType definido como DBTYPE_TABLE. A estrutura DBOBJECT conterá IID_IRowset ou qualquer outra interface de objeto de conjunto de linhas válida no membro iid. O restante dos campos é tratado de forma semelhante a DBTYPE_IUNKNOWN.