WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Funções de cadeia Unicode em DB2

Ao utilizar funções de cadeia em expressões ESQL, certos parâmetros se referem a posições ou contagens de caracteres.

Por exemplo, a função SUBSTRING, codificando:
  SUBSTRING('Hello World!' FROM 7
FOR 4)
resulta na cadeia Worl porque 7 se refere à sétima posição dos caracteres, e 4 se refere a quatro caracteres.

Se a cadeia Hello World! for representada em uma página de código ASCII, o sétimo byte dessa representação é o sétimo caractere. Entretanto, em outras páginas de codificação ou esquemas de codificação (por exemplo, algumas representações Unicode), o sétimo caractere poderia ser iniciado no byte 13 e 4 caracteres podem ocupar 8 bytes.

WebSphere Message Broker manipula corretamente esta situação; isto é, os parâmetros numéricos e resultados destas funções de cadeias sempre se referem a caracteres e não aos bytes usados para representá-los.

Em algumas situações, o WebSphere Message Broker delega expressões para um mecanismo de banco de dados para processamento. Por exemplo, se houver uma cláusula WHERE, em uma função SELECT, aplicada a uma origem de dados do banco de dados, será passada a cláusula WHERE para o banco de dados, se ele puder interpretar todas as funções na expressão.

Se existem funções não suportadas pelo banco de dados, WebSphere Message Broker transmite apenas aquelas que podem ser interpretadas, recupera um conjunto de registros não filtrados, e desempenha a filtragem restante por si mesmo.

Funções de cadeia DB2 utilizam indexação por byte e não por caractere. Assim, os dados Unicode, o significado de certas funções difere das funções do WebSphere Message Broker, embora possam ser ‘interpretadas'.

Os caracteres em representação Unicode UTF8, por exemplo, podem ocupar de 1-4 bytes, de forma que o sétimo caractere possa começar em qualquer local do byte 7 ao byte 25.

As seguintes funções de cadeia são afetadas:
  • Função INSERT
  • Função LEFT
  • Função LENGTH
  • Função OVERLAY
  • Função POSITION
  • Função RIGHT
  • Função SPACE
  • Função SUBSTRING

Estas funções ou possuem parâmetros numéricos, ou retornam resultados numéricos que se referem a índices, ou contagens, de caracteres em uma cadeia.

Quando expressões envolvendo estas funções são transmitidas ao banco de dados DB2, e dados de cadeia Unicode são manipulados no banco de dados, os resultados podem ser inesperados, ou um erro pode ocorrer.

Este erro também pode ocorrer se, por exemplo, uma expressão deste tipo for passada diretamente para o banco de dados usando a função PASSTHRU. Nesta situação, é possível modificar cada expressão você mesmo, caso necessário, para o banco de dados de destino.

Não é possível modificar expressões sistematicamente para evitar este problema e WebSphere Message Broker não tenta fazê-lo.

Se as cadeias Unicode não usarem nenhum caractere que, na representação UTF8, ocupe mais de 1 byte cada, as funções serão executadas corretamente.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:12


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ac00415_