Miltão Relendo sua primeira mensagem, o erro acontece na chamada procedure, não é? Se a declaração já está como VARCHAR2(20 CHAR), então o problema não deve estar no parâmetro declarado... pois o valor passado tem só 9 caracteres.
Poderia fazer um teste, alterando a declaração para NVarchar2(20 char)... que geralmente usa UTF-16... só para ver como se comporta. Outro teste seria tentar simular o erro, diretamente no SQL-Plus... pois pode ser que o bug seja algo na biblioteca de conexão do PHP. [ ]'s André Em 15/10/14, 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]<oracle_br@yahoogrupos.com.br> escreveu: > Beleza André? > > Olha como está as declarações: > > CREATE OR REPLACE TYPE "PHP_ARRAY" AS VARRAY(200000) OF VARCHAR2(20 CHAR) > > > > procedure p_createInventory(iType in number, > iDesc in varchar2, > iRecord in PHP_ARRAY, -- in varchar2, > --multisel_values_table, > omensagem out varchar2) > > > O tipo já está como VARCHAR2(20 CHAR)! > > Att, > > > > > Em 15 de outubro de 2014 12:51, Andre Santos andre.psantos...@gmail.com > [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > >> >> >> Miltão >> >> Nesse cenário específico, pela mensagem de erro, o ambiente está usando >> character-set UTF-16 que usa, no mínimo, 2 bytes por caractere. >> Ou seja, quando é declarada uma variável VARCHAR2(9) **não** são 9 >> caracteres, são 9 BYTES. >> Porém a quantidade de bytes, para UTF-16, tem de ser múltiplo de 2 >> (bytes). >> Para declarar o tamanho em "caracteres", pode usar a sintaxe: VARCHAR2(9 >> CHAR). >> >> [ ]'s >> >> André Santos >> >> >> Em 15 de outubro de 2014 12:35, 'Milton Bastos Henriquis Jr.' >> miltonbas...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br> >> escreveu: >> >> >>> >>> Boa tarde pessoal >>> >>> Cenário: >>> - Oracle database 11.2.0.3 >>> - Servidor Oracle Linux 64 bits >>> - Aplicação em PHP rodando num servidor IIS >>> >>> >>> OCI-22141: given size [string] must be even in UTF-16 environment >>> Cause: The given resize size is odd. In a UTF-16 environment, all >>> characters are 2 bytes in length. >>> Action: Ensure that the given size is even. >>> >>> >>> Em uma certa tela do sistema, o usuário seleciona vários itens e clica >>> num botão. >>> Ao clicar nesse botão, esses itens são enviados pra um parâmetro de >>> entrada de uma >>> procedure. Como o número de itens é variado, o tipo desse parâmetro é um >>> VARRAY. >>> Cada item é uma string de 9 caracteres. >>> O fato de ser 9 caracteres causa o erro acima - se passar 8 ou 10 >>> caracteres >>> funciona, não acontece o erro. Mas se for uma quantidade ímpar, acontece >>> o erro. >>> >>> O que faço pra corrigir isso? Devo alterar algo em algum parametro NLS? >>> >>> >>> >>> Att, >>> >>> >>> >>> Uma certa tela do sistema >>> >>> >> >> >