- Este tópico contém 7 respostas, 6 vozes e foi atualizado pela última vez 15 anos, 11 meses atrás por Rodrigo Almeida.
-
AutorPosts
-
3 de fevereiro de 2009 às 4:07 pm #85043RCBMapsParticipante
Sou novo no assunto, e queria saber qual tipo de campo devo usar no Oracle 10g, quando nesse campo será incluido texto e numeros porem não sei a quantidade, pode ser 500 caracteres como pode ser 1000. por acaso teria que usar um campo tipo Blob?
3 de fevereiro de 2009 às 5:44 pm #85044Regis AraujoParticipanteOla amigo, bom dia!
Bom, o type Varchar2 aceita no máximo 4000 caracteres, se for algo maior que isto, vc pode utilizar o Clob que aceita bem mais…
Abraços…
3 de fevereiro de 2009 às 6:14 pm #85045Ricardo Portilho ProniParticipanteE evite os BLOBs.
3 de fevereiro de 2009 às 7:33 pm #85047marcelomirandolaParticipanteO varchar(2) é uma boa opção, pois apesar de você criar o atributo como varchar(2) de 1000 (p.ex.), e usar apenas 50, ele vai ocupar apenas os 50 e não os 1000 que foi declarado.
3 de fevereiro de 2009 às 9:40 pm #85053vieriParticipanteSQL> ! oerr ora 910
00910, 00000, “specified length too long for its datatype”
// *Cause: for datatypes CHAR and RAW, the length specified was > 2000;
// otherwise, the length specified was > 4000.
// *Action: use a shorter length or switch to a datatype permitting a
// longer length such as a VARCHAR2, LONG CHAR, or LONG RAW3 de fevereiro de 2009 às 11:17 pm #85055Rodrigo AlmeidaParticipanteIsso é verdade… o que o marcelo e vieri postaram.
Abaixo, fiz um exemplo de “besta” para ver como é coloca os espaços em branco no campo que é feito com CHAR!
SQL> create table TST (a varchar2(100), b char(100));
Tabela criada.
SQL> insert into TST values (‘RODRIGO’,’RODRIGO’);
1 linha criada.
SQL> commit;
Commit concluÝdo.
SQL> select dump(a), dump(b) from TST;
DUMP(A)
DUMP(B)
Typ=1 Len=7: 82,79,68,82,73,71,79
Typ=96 Len=100: 82,79,68,82,73,71,79,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,3
2,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32Então dê preferência ao VARCHAR2, que vai no limite de 32KB… se tu precisar de mais… tem as colunas LONG que podem chegar no limite de 2GB de armazenamento,.. e depois tem as LOBS mesmo que chegam no seus 4GBs de armazenamento… só que aí, como o Ricardo disse, deverá ter seus CUIDADOS! Pq LOB é complicado para administrar e trabalhar com elas.
Abraços,
Rodrigo Almeida4 de fevereiro de 2009 às 1:15 am #85061Regis AraujoParticipanteEi Rodrigo, o Varchar2 não tem limite de 4k???
Eu achei q ele somente chegasse a 32k dentro do codigo Pl/Sql….
Abraços…
4 de fevereiro de 2009 às 4:02 pm #85074Rodrigo AlmeidaParticipanteThunder!
É verdade cara! Tinha me esquecido dessas passagens. VARCHAR2 em tabela vai até 4K e em PL/SQL até 32K. Está correto mesmo!
Fiz uns testes aqui de besta, e deu para percerber a diferença!
SQL> ed
Gravou file afiedt.buf1 declare
2 teste varchar2(32767);
3 begin
4 teste := LPAD('RODRIGO',32767,'0');
5 dbms_output.put_line ('Tamanho:' || length(teste));
6* end;
SQL> /
Tamanho:32767Procedimento PL/SQL concluÝdo com sucesso.
SQL> create table TST (a varchar2(32000));
create table TST (a varchar2(32000))
*
ERRO na linha 1:
ORA-00910: specified length too long for its datatypeSQL> create table TST (a varchar2(4000));
Tabela criada.
SQL> alter table TST modify a varchar2(4001);
alter table TST modify a varchar2(4001)
*
ERRO na linha 1:
ORA-00910: specified length too long for its datatypeSQL> alter table TST modify a varchar2(4000);
Tabela alterada.
Abraços,
Rodrigo Almeida[/code] -
AutorPosts
- Você deve fazer login para responder a este tópico.