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

 


Responder a