Márcio Ricardo, nada a ver consoante ou vogal. Márcio Grazianni, a sua questão é ultra-comum, é uma FAQ, iirc já respondida aqui mesmo no Fórum, e é a seguinte : vc tá vendo esse setting de
NLS_CHARACTERSET AL32UTF8 que vc nos mostra na sua msg ? Seguinte, esse "32" inicial que esse banco, ao armazenar caracteres acima de ASCII-127 (ie, caracteres acentuados, e especiais como o sinal de euro - NÃO É só "vogais e consoantes"!! ), vai poder usar até 32 bits (4 bytes) para esses caracteres, E o datatype VARCHAR2(30) está reservando apenas 30 bytes... Note que absolutamente charactersets **** NÃO SÃO **** uma invenção da Oracle, como mostrado em http://www.unicode.org/faq/basic_q.html , por exemplo :, eles são um conceito GERAL e GENÉRICO de TI, que a Oracle é obrigada a adotar, como a maioria dos outros fabricantes de software, é um padrão. No caso do bd Oracle, vc tem duas opções : a) SE vc só for utilizar esse banco com aplicações/caracteres/línguas européias ocidentais, E não for usar caracteres especiais não- contidos, vc pode converter esse banco pra usar um characterset de 8 bits, por exemplo : [EMAIL PROTECTED]:SQL>select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER VALUE ------------------------------ --------------------------------------- - NLS_CHARACTERSET WE8ISO8859P1 [EMAIL PROTECTED]:SQL>CREATE TABLE operacao_nota 2 ( 3 codigo NUMERIC(8) NOT NULL, 4 descricao VARCHAR2(30) NOT NULL, 5 CONSTRAINT pk_operacao_nota_codigo PRIMARY KEY (codigo) 6 ); Tabela criada. [EMAIL PROTECTED]:SQL>INSERT INTO OPERACAO_NOTA (CODIGO, DESCRICAO) VALUES (25, 'Exclusão saídas bonificação'); 1 linha criada. nos manuais de Globalização do bd Oracle vc acha a sintaxe & procedimento para converter bds de um characterset pra outro. OU b) vc pode usar o datatype RECOMENDADO para charactersets multibyte, que é o NVARCHAR2, aí ele reserva espaço em CARACTERES, e NÂO em bytes : SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER VALUE ------------------------------ ------------------------------ NLS_CHARACTERSET UTF8 SQL> CREATE TABLE operacao_nota 2 ( 3 codigo NUMERIC(8) NOT NULL, 4 descricao VARCHAR2(30) NOT NULL, 5 CONSTRAINT pk_operacao_nota_codigo PRIMARY KEY (codigo) 6 ); Tabela criada. SQL> INSERT INTO OPERACAO_NOTA (CODIGO, DESCRICAO) VALUES (25, 'Exclusão saídas bonificação'); INSERT INTO OPERACAO_NOTA (CODIGO, DESCRICAO) VALUES (25, 'Exclusão saídas bonif icação') * ERRO na linha 1: ORA-12899: valor muito grande para a coluna "SYSTEM"."OPERACAO_NOTA"."DESCRICAO" (real: 32, mßximo: 30) SQL> alter table operacao_nota modify descricao NVARCHAR2(30); Tabela alterada. SQL> INSERT INTO OPERACAO_NOTA (CODIGO, DESCRICAO) VALUES (25, 'Exclusão saídas bonificação'); 1 linha criada. SQL> desc OPERACAO_NOTA Nome Nulo? Tipo ---------------------- -------- ------------------------------------ CODIGO NOT NULL NUMBER(8) DESCRICAO NOT NULL NVARCHAR2(30) ==> JÁ que , como eu disse, isso não é uma invenção da Oracle, pesquisando na net vc acha sites com lista de caracteres presentes em cada characterset que o bd Oracle aceita, se vc tiver em dúvida. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Márcio Ricardo <[EMAIL PROTECTED]> escreveu > > Marcio, não sei a solução, mas esse problema já postado aqui no grupo e se não me engano é porque as letras com vogais ocupam mais bytes do q as sem vogais e com isso estoura o comprimento da variável. Faça o teste sem os acentos e dê uma procurada na lista q vc achar explicação melhor > ----- Original Message ----- > From: Marcio Grazianni > To: oracle_br@yahoogrupos.com.br > Sent: Wednesday, June 28, 2006 10:31 AM > Subject: [oracle_br] Oracle XE e acentos > > > Olá pessoal. > > Estou com o seguinte problema: Instalei o Oracle 10g XE e criei uma > tabela com um campo que suporta 30 caracteres - varchar2(30) - e estou > tentando inserir a seguinte linha mas dá um erro que segue abaixo: > > este comando funciona normal > CREATE TABLE operacao_nota > ( > codigo NUMERIC(8) NOT NULL, > descricao VARCHAR2(30) NOT NULL, > CONSTRAINT pk_operacao_nota_codigo PRIMARY KEY (codigo) > ); > > este comando dá o erro > INSERT INTO OPERACAO_NOTA (CODIGO, DESCRICAO) VALUES (25, 'Exclusão > saídas bonificação'); > ORA-12899: valor muito grande para a coluna > "MARCIO"."OPERACAO_NOTA"."DESCRICAO" (real: 31, máximo: 30) > > Mas observem que a string 'Exclusão saídas bonificação' só tem 27 > caracteres. Mas tem 4 caracteres com acentos que parece que o Oracle > considera como dois caracteres cada um. > > Segue abaixo a configuração do banco em questão: (Instalado com todas as > opções padrão, o velho next, next...) > > NLS (National Language Support) > Parâmetro de Idioma Nacional > <javascript:html_PPR_Report_Page (this,'R172752728356379421','http://127.0.0.1:8080/apex/f? p=4500:36:4440931247653011:fsp_sort_1_desc::RP&fsp_region_id=172752728 356379421');>classificar > por esta coluna Valor > <javascript:html_PPR_Report_Page (this,'R172752728356379421','http://127.0.0.1:8080/apex/f? p=4500:36:4440931247653011:fsp_sort_2::RP&fsp_region_id=17275272835637 9421');> > > NLS_CALENDAR GREGORIAN > NLS_CHARACTERSET AL32UTF8 > NLS_COMP BINARY > NLS_CURRENCY R$ > NLS_DATE_FORMAT DD/MM/RR > NLS_DATE_LANGUAGE BRAZILIAN PORTUGUESE > NLS_DUAL_CURRENCY Cr$ > NLS_ISO_CURRENCY BRAZIL > NLS_LANGUAGE BRAZILIAN PORTUGUESE > NLS_LENGTH_SEMANTICS BYTE > NLS_NCHAR_CHARACTERSET AL16UTF16 > NLS_NCHAR_CONV_EXCP FALSE > NLS_NUMERIC_CHARACTERS ,. > NLS_SORT WEST_EUROPEAN > NLS_TERRITORY BRAZIL > NLS_TIME_FORMAT HH24:MI:SSXFF > NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF > NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR > NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR > > > > Desde já agradeço qualquer ajuda > > Marcio Grazianni > [EMAIL PROTECTED] > Brasil Software Soluções Empresariais Ltda. > > > > > [As partes desta mensagem que não continham texto foram removidas] > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html