a dúvida num era minha mas valeu pela aula. Marcelo
On 6/28/06, jlchiappa <[EMAIL PROTECTED]> wrote: > > 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] > > > > > > > > [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