ORA-00907: parêntese direito não encontrado E 00907. 00000 - "missing right parenthesis"

pessoal estou tentando criar um projeot da facu, mas sempre dar esse erro, porfavor me ajuda

CREATE TABLE Aluno 
(
  AlunoID       int NOT NULL AUTO_INCREMENT,
  Nome varchar2(40) NOT NULL,
  Pai  varchar2(40) NOT NULL,
  Mae  varchar2(40) NOT NULL,
  datanascimento DATE
  Sexo CHAR(1)
);

erros que ta dando:

Erro a partir da linha : 1 no comando -
CREATE TABLE Aluno 
(
  AlunoID       int NOT NULL AUTO_INCREMENT,
  Nome varchar2(40) NOT NULL,
  Pai  varchar2(40) NOT NULL,
  Mae  varchar2(40) NOT NULL,
  datanascimento DATE
  Sexo CHAR(1)
)

Relatório de erros -

ORA-00907: parêntese direito não encontrado
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

img:
https://drive.google.com/file/d/1krcu8lto8x3Z_PtJLhNgsoDkSVKHdXgT/view?usp=sharing

Não está faltando vírgula depois do DATE?

Mesmo erro continuar

https://drive.google.com/file/d/1WU8k2m-XzrY86FWF_qwiaCoWneFsbJgx/view?usp=sharing

No Oracle aquele AUTO_INCREMENT não existe.

O comando certo tá aqui: http://sqlfiddle.com/#!4/31012

Repare que eu não criei nada semelhante ao auto increment, porque no oracle 11 (na sua tag) dá um pouco mais de trabalho.

Procure como usar Sequences em oracle pra aprender como fazer.

agora foi sem o auto increment, obrigada ^^

vou tenta criar o resto da tabela agora

Seja bem vinda ao fórum, por gentileza, evitar postar links no fórum. A menos que seja codepen e similares.

Se for alguma coisa visual, enviar imagem.
Se for código, enviar o código.

Link de projeto, apenas do github, assim todos ficam seguros.

ok, obrigada pela informacao

ser alguem pode me ajuda, e explica grata ficarei

Erro a partir da linha : 19 no comando -
CREATE TABLE Classe
(
Cd_Classe int(8) not null,
Nr_AnoLetivo int(4) not null,
Nr_Serie int(2) not null,
Sg_Turma varchar(2) not null,
Cd_Escola int(6) not null,
Cd_Grau int(2) not null,
Cd_Periodo int(2) not null,
PRIMARY KEY(Cd_Classe),
)
Relatório de erros -
ORA-00907: parêntese direito não encontrado
00907. 00000 - “missing right parenthesis”
*Cause:
*Action:

Tens uma virgula a mais. A ultima instrução não pode levar virgula.

Continuaste o mesmo erro amigo

Erro a partir da linha : 19 no comando -
CREATE TABLE Classe 
(  
  Cd_Classe int(8) not null,
  Nr_AnoLetivo int(4) not null,  
  Nr_Serie int(2) not null,  
  Sg_Turma varchar(2) not null,  
  Cd_Escola int(6) not null,  
  Cd_Grau int(2) not null,  
  Cd_Periodo int(2) not null,  
  PRIMARY KEY(Cd_Classe)
);
Relatório de erros -
ORA-00907: parêntese direito não encontrado
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

O problema é o int(4), int(2), etc. Em Oracle o tipo para números inteiros é simplesmente integer ou int (sem nada depois). Assim funciona:

CREATE TABLE Classe
(
  Cd_Classe integer not null,
  Nr_AnoLetivo integer not null,
  Nr_Serie integer not null,
  Sg_Turma varchar(2) not null,
  Cd_Escola integer not null,
  Cd_Grau integer not null,
  Cd_Periodo integer not null,
  PRIMARY KEY(Cd_Classe)
);

Como já dito, você também pode usar int (sem nada depois), como por exemplo Cd_Classe int not null, que funciona da mesma forma (como aliás foi feito no link indicado em uma das respostas acima).


Mas se quiser definir a precisão de cada número, aí você tem que usar o tipo number:

CREATE TABLE Classe
(
Cd_Classe number(8) not null,
Nr_AnoLetivo number(4) not null,
Nr_Serie number(2) not null,
Sg_Turma varchar(2) not null,
Cd_Escola number(6) not null,
Cd_Grau number(2) not null,
Cd_Periodo number(2) not null,
PRIMARY KEY(Cd_Classe)
);

Resumindo: int/integer não tem a precisão (o número entre parênteses), number tem (embora seja opcional).


Por fim, recomendo que leia a documentação sobre tipos numéricos.

Aliás, como dica geral - que garanto que vai te ajudar muito no médio e longo prazo - sempre consulte a documentação antes de sair “tentando coisas aleatoriamente” (que não sei se foi o caso, mas lendo o tópico, passou a impressão de que foi mais ou menos isso) :slight_smile:

Estou seguindo o modelo que o prof me perdiu, que eu aprendi diz que tem que coloca os numeros que prof passou

Mas ele usou Oracle mesmo? Eu testei no Oracle 11g (do http://sqlfiddle.com/), e nessa versão, int não tem a precisão, somente number.

int(2), int(6), etc funciona em outros bancos (MySQL. SQLite), verifique qual foi que ele usou.