Notas sobre o Release


41.8 Capítulo 5. Funções da CLI do DB2

41.8.1 SQLBindFileToParam - Ligar Referência do Arquivo do LOB ao Parâmetro do LOB

O último parâmetro - IndicatorValue - na função CLI SQLBindFileToParam() está documentado atualmente como "saída (adiada)". Ele deve ser "entrada (adiada)".

41.8.2 SQLColAttribute -- Retornar um Atributo de Coluna

As seguintes atualizações são inclusões na coluna "Descrição" para os argumentos SQL_DESC_AUTO_UNIQUE_VALUE e SQL_DESC_UPDATABLE:

SQL_DESC_AUTO_UNIQUE_VALUE
SQL_FALSE é retornado em NumericAttributePtr para todos os tipos de dados SQL do DB2. Atualmente, a CLI do DB2 não pode determinar se uma coluna é uma coluna de identidade, portanto, SQL_FALSE sempre será retornado. Essa limitação não está totalmente em conformidade com as especificações do ODBC. Versões futuras da CLI do DB2 para servidores Unix e Windows fornecerão suporte auto-exclusivo.

SQL_DESC_UPDATABLE
Indica se o tipo de dados da coluna é um tipo de dados atualizável:

41.8.3 SQLGetData - Obter Dados de uma Coluna

O texto a seguir substitui a sentença atual que aparece na colune Explicação para SQLSTATE 22007 da tabela SQLSTATEs para SQLGetData:

A conversão de uma cadeia para um formato de data e hora foi indicada, mas uma representação ou valor de cadeia inválido foi especificado, ou o valor era uma data inválida.

41.8.4 SQLGetInfo - Obter Informações Gerais

A informação a seguir corrige as informações na seção "Uso" sob "Informações Retornadas pelo SQLGetInfo":

41.8.5 SQLGetLength - Recuperar Comprimento de um Valor de Cadeia

A informação a seguir corrige a nota de rodapé na "Tabela 113. Argumentos de SQLGetLength" :

Nota: a Isso está em caracteres para dados DBCLOB.

41.8.6 SQLNextResult - Associar o Próximo Conjunto de Resultados a Outra Manipulação de Instrução

O seguinte texto deve ser incluído no Capítulo 5, "Funções do DB2 CLI":

41.8.6.1 Objetivo

Especificação: DB2 CLI 7.x

41.8.6.2 Sintaxe

SQLRETURN   SQLNextResult	(SQLHSTMT	StatementHandle1
			 	                         SQLHSTMT	StatementHandle2);

41.8.6.3 Argumentos de Função


Tabela 14. Argumentos SQLNextResult

Tipo de Dados Argumento Uso Descrição
SQLHSTMT StatementHandle entrada Manipulação de instrução.
SQLHSTMT StatementHandle entrada Manipulação de instrução.

41.8.6.4 Uso

Um procedimento armazenado retorna vários conjuntos de resultados deixando um ou mais cursores abertos após a saída. O primeiro conjunto de resultados é sempre acessado através da manipulação de instrução chamada pelo procedimento armazenado. Se vários conjuntos de resultados forem retornados, o SQLMoreResults() ou o SQLNextResult() poderão ser utilizados para descrever e buscar o conjunto de resultados.

SQLMoreResults() é utilizado para fechar o cursor do primeiro conjunto de resultados e permitir que o próximo seja processado, contanto que SQLNextResult() mova o próximo conjunto de resultados paraStatementHandle2, sem fechar o cursor em StatementHandle1. Ambas as funções retornarão SQL_NO_DATA_FOUND, se não houver nenhum conjunto de resultados para ser buscado.

O uso de SQLNextResult() permite que os conjuntos de resultados sejam processados em qualquer ordem depois de terem sido transferidos para outras manipulações de instrução. Chamadas mistas a SQLMoreResults() e a SQLNextResult() são permitidas até que não haja mais cursores (conjuntos de resultados abertos) em StatementHandle1.

Quando SQLNextResult() retorna SQL_SUCCESS, o próximo conjunto de resultados não é mais associado a StatementHandle1. Ao invés disso, o próximo conjunto de resultados é associado a StatementHandle2, como se uma chamada a SQLExecDirect() tivesse executado com sucesso uma consulta em StatementHandle2. O cursor, portanto, pode ser descrito utilizando SQLNumResultSets(), SQLDescribeCol() ou SQLColAttribute().

Após SQLNextResult() ter sido chamado, o conjunto de resultados agora associado a StatementHandle2 será removido da cadeia de conjuntos de resultados restantes e não poderá ser utilizado novamente em SQLNextResult() ou SQLMoreResults(). Isso significa que para 'n' conjuntos de resultados, SQLNextResult() pode ser chamado com sucesso no máximo 'n-1' vezes.

Se SQLFreeStmt() for chamado com a opção SQL_CLOSE ou SQLFreeHandle() for chamado com HandleType definido para SQL_HANDLE_STMT, todos os conjuntos de resultados pendentes nessa manipulação de instrução serão descartados.

SQLNextResult() retorna SQL_ERROR se StatementHandle2 tiver um cursor aberto ou StatementHandle1 e StatementHandle2 não estiverem na mesma conexão. Se forem retornados quaisquer erros ou avisos, SQLError() deverá sempre ser chamado em StatementHandle1.

Nota:
SQLMoreResults() também trabalha com uma consulta de parâmetros com uma matriz de valores de parâmetros especificada com SQLParamOptions() e SQLBindParameter(). SQLNextResult(), no entanto, não suporta isso.

41.8.6.5 Códigos de Retorno

41.8.6.6 Diagnósticos


Tabela 15. SQLNextResult SQLSTATEs

SQLSTATE Descrição Explicação
40003 08S01 Falha no link de comunicação. O link de comunicação entre o aplicativo e a origem de dados falhou antes da conclusão da função.
58004 Queda do sistema inesperada. Erro do sistema irrecuperável.
HY001 Falha na alocação de memória. O DB2 CLI não consegue alocar a memória requerida para suportar a execução ou a conclusão da função.
HY010 Erro de seqüência da função.

A função foi chamada durante uma operação de dados na execução (SQLParamData(), SQLPutData()).

StatementHandle2 tem um cursor aberto associado a ele.

A função foi chamada durante uma operação BEGIN COMPOUND e END COMPOUND SQL.

HY013 Erro inesperado de manipulação de memória. O DB2 CLI não consegue acessar a memória requerida para suportar a execução ou a conclusão da função.
HYT00 Tempo limite expirado. O período de timeout expirou antes da origem de dados retornar o conjunto de resultados. Os tempos limite são suportados somente em sistemas de multitarefas, como o Windows 3.1 e o Macintosh System 7. O período de timeout pode ser definido utilizando-se o atributo SQL_ATTR_QUERY_TIMEOUT para SQLSetConnectAttr().

41.8.6.7 Restrições

Somente SQLMoreResults() pode ser utilizado para consultas de parâmetros.

41.8.6.8 Referências

41.8.7 SQLSetEnvAttr - Definir Atributo de Ambiente

O seguinte é um atributo de ambiente adicional que pertence à seção "Atributos de Ambiente", em "Uso":

SQL_ATTR_KEEPCTX
Um valor inteiro de 32 bits que especifica se o contexto deve ser mantido quando o identificador de ambiente é liberado. Esse atributo deve ser definido no nível de ambiente. Pode ser utilizado por aplicativos com vários threads para gerenciar contextos associados a conexões, recursos de banco de dados e transmissão de dados de cada thread. Os valores possíveis são:

Nota:
É uma extensão IBM.

41.8.8 SQLSetStmtAttr -- Definir Opções Relacionadas a uma Instrução

As informações a seguir substituem as informações existentes para o atributo de instrução SQL_ATTR_QUERY_TIMEOUT:

SQL_ATTR_QUERY_TIMEOUT (DB2 CLI v2)
Um valor inteiro de 32 bits que é o número de segundos que será aguardado para que uma instrução SQL seja executada entre o retorno para o aplicativo. Essa opção pode ser definida e utilizada para finalizar longas consultas em execução. O valor 0 significa que não há timeout. A CLI do DB2 suporta valores não-zero para todas as plataformas que suportem múltiplos threads.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]