• Nenhum resultado encontrado

Os diferentes produtos de banco de dados relacional IBM nem sempre produzem os mesmos SQLCODEs para erros semelhantes. Mesmo quando o SQLCODE é o mesmo, ele pode ser acompanhado por tokens especificados de modo diferente. A lista de tokens é transmitida no campo SQLERRMC do SQLCA. Por padrão, o DB2 Connect mapeia SQLCODEs e tokens de cada servidor de banco de dados de mainframe IBM para os DB2 SQLCODEs apropriados.

Se você quiser desativar o mapeamento de SQLCODE, especifique NOMAP na cadeia de parâmetros do diretório DCS.

Se você transportar um aplicativo diretamente do servidor de banco de dados de mainframe IBM, como o DB2 para z/OS, provavelmente desejará desativar o mapeamento SQLCODE. Isso permitiria usar o aplicativo sem alterar os SQLCODEs que ele referencia.

Desativando o Mapeamento SQLCODE

Se você desejar desativar o mapeamento de SQLCODE, especifique NOMAP na cadeia de parâmetros do diretório DCS.

Se você transportar um aplicativo diretamente de um servidor de banco de dados de mainframe IBM, como o DB2 para z/OS, poderá desejar desativar o

mapeamento SQLCODE. Isso permitiria usar o aplicativo sem alterar os SQLCODEs que ele referencia.

Ajustando o Mapeamento SQLCODE

Por padrão, o DB2 Connect mapeia SQLCODEs e tokens de cada servidor de banco de dados de mainframe IBM para os DB2 SQLCODEs apropriados.Os seguintes arquivos são cópias do mapeamento de SQLCODE padrão: v O dcs1dsn.map mapeia os DB2 para z/OS SQLCODEs.

v O dcs1ari.map mapeia os SQLCODEs do DB2 Server para VM e VSE. v O dcs1qsq.map mapeia os DB2 para IBM i SQLCODEs.

Nenhum mapeamento é necessário para o DB2 em sistemas operacionais Linux ou UNIX.

1. Se você deseja substituir o mapeamento SQLCODE padrão ou estiver

utilizando um servidor de banco de dados de mainframe IBM que não possui o mapeamento SQLCODE (um servidor de banco de dados não-IBM), poderá copiar um desses arquivos e utilizá-lo como base para seu novo arquivo de mapeamento SQLCODE. Copiando o arquivo em vez de editá-lo diretamente, você assegura que seja possível consultar sempre o mapeamento de SQLCODE original, se necessário.

2. Especifique o nome do arquivo de seu novo arquivo de mapeamento de SQLCODE na cadeia de parâmetros do Diretório DCS.

3. Cada arquivo de mapeamento é um arquivo ASCII, criado e editado usando um editor ASCII. Na instalação inicial, o arquivo é armazenado no diretório map no caminho da instalação.

O arquivo pode conter os seguintes tipos especiais de linhas:

&& O início lógico do arquivo. Todas as linhas antes da primeira ocorrência de && são consideradas como comentários de formato livre e são ignoradas. Se o arquivo não contiver nada após &&, nenhum mapeamento de SQLCODE será desempenhado. Também é possível desativar o mapeamento de SQLCODE com o parâmetro NOMAP, conforme descrito anteriormente.

* Como o primeiro caractere em uma linha, indica um comentário.

W Como o único caractere em uma linha, indica que os sinalizadores de aviso devem ser remapeados. Por padrão, os sinalizadores originais de aviso são transmitidos. O W deve estar em maiúsculas.

Todas as outras linhas após && devem ser vazias ou instruções de mapeamento no seguinte formato:

input_code [, output_code [, token_list]]

O input_code representa um dos seguintes:

sqlcode O SQLCODE do servidor de banco de dados de mainframe IBM.

U Todos os SQLCODEs negativos indefinidos (aqueles não listados neste arquivo) são mapeados para o output_code especificado. Se nenhum

output_code for especificado nessa linha, o SQLCODE original será

usado. Esse caractere deve estar em maiúsculas.

P Todos os SQLCODEs positivos indefinidos (aqueles não listados neste arquivo) são mapeados para o output_code especificado. Se nenhum

output_code for especificado nessa linha, o SQLCODE original será

usado. Esse caractere deve estar em maiúsculas.

ccnn O código de classe SQLSTATE do servidor de banco de dados de mainframe IBM. nn é um dos seguintes:

00 Conclusão bem-sucedida não qualificada

01 Aviso

02 Não há dados

21 Violação de cardinalidade

22 Exceção de dados

23 Violação de restrição

24 Estado de cursor inválido

26 Identificador de instrução SQL inválido

40 Rollback de Transação

42 Violação de acesso

51 Estado do aplicativo inválido

55 O objeto não está no estado de pré-requisito

56 Erros de Produto ou SQL Diversos

57 Recurso não disponível ou intervenção do operador

58 Erro do sistema

O output_code especificado é usado para todos os SQLCODEs com esse código de classe que não estejam especificados explicitamente no

arquivo de mapeamento. Se nenhum output_code for especificado nessa linha, o SQLCODE original é mapeado para si mesmo sem tokens copiados sobre ele.

Os caracteres cc devem ser minúsculos.

Se o mesmo input_code aparecer mais de uma vez no arquivo de mapeamento, a primeira ocorrência será usada. O output_code representa o SQLCODE de saída. Se nenhum valor for especificado, o SQLCODE original será usado. Se você especificar um código de saída, também poderá especificar um dos seguintes:

(s) O SQLCODE de entrada mais o ID do produto (ARI, DSN ou QSQ) será colocado no campo de token de mensagem SQLCA.

O SQLCODE original será retornado como o único token. Esta opção foi projetada para manipular SQLCODEs indefinidos, com exceção de +965 e -969. Se +965 ou -969 for o output_code, a lista de tokens retornada no campo SQLERRMC do SQLCA incluirá o SQLCODE original, seguido pelo identificador do produto, seguido pela lista de tokens originais.

O caractere s deve ser minúsculo.

(token-list)

Uma lista de tokens, separados por vírgulas. Especifique apenas uma vírgula para ignorar um token específico. Por exemplo, o formato (,t2,,t4) significa que o primeiro e terceiro tokens de saída são nulos. Cada token possui o formato de um número (n), precedido

opcionalmente por c, seguido opcionalmente pelo c ou i. Ele é interpretado da seguinte forma:

c O tipo de dados do token nesta posição é CHAR (o padrão). Se

cvier antes de n, ele se referirá ao token de entrada; se vier depois de n, ele se referirá ao token de saída. O caractere c deve ser minúsculo.

i O tipo de dados do token nesta posição é INTEGER. Se i vier depois de n, ele se referirá ao token de saída. i não deve vir antes de n, porque os produtos do servidor de banco de dados de mainframe IBM suportam somente tokens CHAR. O caractere i deve ser minúsculo.

n Um número ou números indicando quais tokens do servidor de banco de dados de mainframe IBM são usados. Eles são

organizados na ordem desejada para posicionamento no SQLCA de saída. O número indica o token do servidor de banco de dados de mainframe IBM; a organização indica a ordem em que os tokens serão colocados no SQLCA.

Por exemplo, o servidor de banco de dados de mainframe IBM pode retornar dois tokens, 1 e 2. Se desejar que o token 2 apareça antes do token 1 na saída SQLCA, especifique (2,1). É possível combinar múltiplos números de tokens para formar um único token de saída CHAR, conectando-os com pontos. As vírgulas são usadas para separar tokens de saída. Se nenhum token for especificado antes de uma vírgula, nenhum token de saída será incluído no SQLCA nessa posição.

Quaisquer tokens que ocorrerem no SQLCA de saída após o último token especificado serão mapeados para um token nulo.

A Figura 9 mostra um arquivo de mapeamento SQLCODE de amostra.

As seguintes descrições correspondem ao número da linha correspondente na figura anterior:

1. O SQLCODE é mapeado de -007 para -007. O primeiro token de entrada recebido do servidor de banco de dados de mainframe IBM é utilizado como o primeiro token de saída, e ele padroniza para CHAR. Nenhum outro token é transferido.

2. O SQLCODE é mapeado de -010 para -010 (nenhum SQLCODE de saída é especificado). Nenhum token é colocado no SQLCA de saída.

3. O SQLCODE é mapeado de -060 para -171. O primeiro token de entrada recebido do servidor de banco de dados de mainframe IBM é descartado. O segundo é usado como o primeiro token no SQLCA de saída e ele é CHAR. Não há um segundo token no SQLCA de saída.

4. O SQLCODE é mapeado de -204 para -204. O primeiro e segundo tokens recebidos do servidor de banco de dados de mainframe IBM são CHAR. Esses dois tokens de entrada são combinados para formar um token de saída CHAR, que será o primeiro token de saída no SQLCA.

5. O SQLCODE é mapeado de -633 para -206. O primeiro token de entrada recebido do servidor de banco de dados de mainframe IBM é CHAR. Ele é convertido em INTEGER e é usado como o segundo token no SQLCA de saída. O primeiro token no SQLCA de saída é nulo, conforme indicado por uma vírgula.

6. O SQLCODE é mapeado de -30021 para -30021. O primeiro e o segundo tokens de entrada recebidos do servidor de banco de dados de mainframe IBM são CHAR, e são utilizados como o primeiro e segundo tokens na saída SQLCA. 7. Todos os SQLCODEs em SQLCAs com SQLSTATEs na classe 00 serão

mapeados para SQLCODE +000.

8. Todos os SQLCODEs indefinidos são mapeados para -969. Essa opção deverá ser usada apenas se todos os códigos mapeáveis forem listados, incluindo aqueles que são idênticos e que não requerem mapeamento. A opção (s) indica que a lista de tokens a ser retornada no campo SQLERRMC do SQLCA inclui o SQLCODE original, seguido pelo produto em que ocorreu o erro, seguido pela

&& -007 , -007 , (1) -010 -060 , -171 , (2) ... -204 , -204 , (c1.2c) ... -633 , -206 , (,c1i) -30021 , -30021 , (c1c,c2c) cc00 , +000 ... U , -969 , (s) P , +965 , (s)

lista de tokens originais. Se a entrada U não estiver incluída, todos os códigos não listados serão transmitidos sem qualquer mapeamento.

9. Todos os SQLCODEs positivos indefinidos são mapeados para +965. Essa opção deverá ser usada apenas se todos os códigos mapeáveis forem listados,

incluindo aqueles que são idênticos e que não requerem mapeamento. A opção

(s)indica que a lista de tokens a ser retornada no campo SQLERRMC do SQLCA inclui o SQLCODE original, seguido pelo produto em que ocorreu o aviso, seguido pela lista de tokens originais. Se a entrada P não estiver incluída, todos os códigos positivos não listados serão transmitidos sem qualquer

mapeamento.

Capítulo 10. Monitoramento do Sistema de Banco de Dados e