Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para descrever os parâmetros de qualquer instrução SQL, o driver ODBC do SQL Server Native Client compila e executa uma instrução SELECT Transact-SQL quando SQLDescribeParam é chamado em um identificador de instrução ODBC preparado. Os metadados do conjunto de resultados determinam as características dos parâmetros na instrução preparada. SQLDescribeParam pode retornar qualquer código de erro que SQLExecute ou SQLExecDirect possa retornar.
Melhorias no mecanismo de banco de dados a partir do SQL Server 2012 permitem que o SQLDescribeParam obtenha descrições mais precisas dos resultados esperados. Esses resultados mais precisos podem ser diferentes dos valores retornados pelo SQLDescribeParam em versões anteriores do SQL Server. Para obter mais informações, consulte a Descoberta de Metadados.
Também novo no SQL Server 2012, ParameterSizePtr agora retorna um valor que se alinha com a definição para o tamanho, em caracteres, da coluna ou expressão do marcador de parâmetro correspondente, conforme definido na especificação ODBC. Nas versões anteriores do SQL Server Native Client, ParameterSizePtr poderia ser o valor correspondente do SQL_DESC_OCTET_LENGTH tipo ou um valor de tamanho de coluna irrelevante que foi fornecido ao SQLBindParameter para um tipo, o valor do qual deve ser ignorado (SQL_INTEGERpor exemplo).
O driver não dá suporte à chamada de SQLDescribeParam nas seguintes situações:
Depois de SQLExecDirect para qualquer Transact-SQL instruções UPDATE ou DELETE que contenham a cláusula FROM.
Para qualquer instrução ODBC ou Transact-SQL que contenha um parâmetro em uma cláusula HAVING ou em comparação com o resultado de uma função SUM.
Para qualquer instrução ODBC ou Transact-SQL dependendo de uma subconsulta que contenha parâmetros.
Para instruções SQL ODBC que contêm marcadores de parâmetro em ambas as expressões de uma comparação, como ou predicado quantificado.
Para qualquer consulta em que um dos parâmetros seja um parâmetro para uma função.
Quando houver comentários (/* */) no comando Transact-SQL.
Ao processar um lote de instruções Transact-SQL, o driver também não dá suporte à chamada de SQLDescribeParam para marcadores de parâmetro em instruções após a primeira instrução no lote.
Ao descrever os parâmetros de procedimentos armazenados preparados, SQLDescribeParam usa o procedimento armazenado do sistema sp_sproc_columns para recuperar características de parâmetro. sp_sproc_columns pode relatar dados para procedimentos armazenados no banco de dados do usuário atual. Preparar um nome de procedimento armazenado totalmente qualificado permite que SQLDescribeParam seja executado entre bancos de dados. Por exemplo, o procedimento armazenado do sistema sp_who pode ser preparado e executado em qualquer banco de dados como:
SQLPrepare(hstmt, "{call sp_who(?)}", SQL_NTS);
Executar SQLDescribeParam após a preparação bem-sucedida retorna um conjunto de linhas vazio quando conectado a qualquer banco de dados, mas master. A mesma chamada, preparada da seguinte maneira, faz com que SQLDescribeParam tenha êxito independentemente do banco de dados de usuário atual:
SQLPrepare(hstmt, "{call master..sp_who(?)}", SQL_NTS);
Para tipos de dados de valor grande, o valor retornado em DataTypePtr é SQL_VARCHAR, SQL_VARBINARY ou SQL_NVARCHAR. Para indicar que o tamanho do parâmetro de tipo de dados de valor grande é "ilimitado", o driver ODBC do SQL Server Native Client define ParameterSizePtr como 0. Os valores de tamanho real são retornados para parâmetros padrão varchar .
Observação
Se o parâmetro já tiver sido associado a um tamanho máximo para os parâmetros SQL_VARCHAR, SQL_VARBINARY ou SQL_WVARCHAR, o tamanho associado do parâmetro será retornado, não "ilimitado".
Para associar um parâmetro de entrada de tamanho "ilimitado", os dados em execução devem ser usados. Não é possível associar um parâmetro de saída de tamanho "ilimitado" (não há nenhum método para transmitir dados de um parâmetro de saída, como o SQLGetData faz para conjuntos de resultados).
Para parâmetros de saída, um buffer deve ser associado e, se o valor for muito grande, o buffer será preenchido e uma mensagem SQL_SUCCESS_WITH_INFO e será retornado junto com os "dados da cadeia de caracteres; truncamento à direita" aviso. Os dados truncados são descartados.
Parâmetros SQLDescribeParam e Table-Valued
Um aplicativo pode recuperar informações de parâmetro com valor de tabela para uma instrução preparada com SQLDescribeParam. Para obter mais informações, consulte Table-Valued Metadados de parâmetro para instruções preparadas.
Para obter mais informações sobre parâmetros com valor de tabela em geral, consulte Table-Valued Parameters (ODBC).
Suporte a SQLDescribeParam para recursos avançados de data e hora
Os valores retornados para tipos de data/hora são os seguintes:
| DataTypePtr | ParameterSizePtr | DecimalDigitsPtr | |
|---|---|---|---|
| Data e hora | SQL_TIPO_TIMESTAMP | vinte e três | 3 |
| smalldatetime | SQL_TIPO_TIMESTAMP | 16 | 0 |
| data | SQL_TYPE_DATE | 10 | 0 |
| Hora | SQL_SS_TIME2 | 8, 10..16 | 0..7 |
| `datetime2` | SQL_TIPO_TIMESTAMP | 19, 21..27 | 0..7 |
| datetimeoffset | SQL_SS_TIMESTAMPOFFSET | 26, 28..34 | 0..7 |
Para obter mais informações, consulte Melhorias de data e hora (ODBC).
Suporte a SQLDescribeParam para UDTs CLR grandes
SQLDescribeParam dá suporte a UDTs (tipos definidos pelo usuário) CLR grandes. Para obter mais informações, consulte ODBC (Tipos Definidos pelo Usuário) CLR Grandes.
Consulte Também
Função SQLDescribeParam
Detalhes da implementação da API do ODBC