- This topic has 2 replies, 3 voices, and was last updated 8 years, 7 months ago by José Laurindo Chiappa.
-
AuthorPosts
-
23 de março de 2016 at 6:12 pm #108088jefferson pereiraParticipant
Pessoal quando coloco este codigo no oracle express
da seguinte erro ORA-00906 missing left parenthesis
mas nao consigo achar o errocreate table classe
( cd_classe number(8),
nr_anoletivo number(4) CONSTRAINT classe_nr_anoletivo_nn not null,
cd_escola number(6),
cd_grau number(2),
nr_serie number(2) CONSTRAINT classe_nr_serie_nn not null,
sg_turma varchar2(2) CONSTRAINT classe_sq_turma_nn not null,
cd_periodo number(2),
CONSTRAINT classe_cd_classe_pk primary key,
CONSTRAINT classe_nr_anoletivo_ck chek(nr_anoletivo in(>2000)),CONSTRAINT classe_cd_escola_fk foreign key references ESCOLA(cd_escola),
CONSTRAINT classe_cd_grau_fk foreign key(cd_grau) references GRAU(cd_grau),
CONSTRAINT classe_cd_periodo_fk foreign key references PERIODO(cd_periodo),
);create table aluno
(
nm_Rgm Number(8),
nm_Nome varchar2(40) CONSTRAINT aluno_nm_Nome_nn not null,
nm_Pai varchar2(40) CONSTRAINT aluno_nm_Pai_nn not null,
nm_mae varchar2(40) CONSTRAINT aluno_nm_Mae_nn not null,
dt_Nascimento date CONSTRAINT aluno_dt_Nascimento_nn not null,
ID_Sexo char(1),
CONSTRAINT aluno_nm_Rgm_pk primary key,
CONSTRAINT aluno_ID_Sexo_ck chek(ID_Sexo in(‘f’,’m’)),
);create table matricula
( cd_classe number(8) CONSTRAINT matricula_cd_classe_pk primary key,
nr_rgm number(8) CONSTRAINT matricula_nr_rgm_pk primary key,
dt_matricula date CONSTRAINT matricula_dt_matricula_nn not null,CONSTRAINT matricula_cd_classe_pk primary key,
CONSTRAINT matricula_cd_classe_fk foreign key references CLASSE(cd_classe),
CONSTRAINT matricula_nr_rgm_pk primary key,
CONSTRAINT matricula_nr_rgm_fk foreigen key references ALUNO(nr_rgm),
);create table escola
( cd_escola number(6),
nm_escola varchar2(50) CONSTRAINT escola_nm_escola_nn not null,
ds_endereco varchar2(50) CONSTRAINT escola_ds_endereco_nn not null,
ds_bairro varchar2(40) CONSTRAINT escola_ds_bairro_nn not null,
CONSTRAINT escola_cd_escola_pk primary key,
);create table grau
( cd_grau number(2),
nm_grau varchar(2) CONSTRAINT grau_nm_grau_nn not null,
CONSTRAINT grau_cd_grau_pk primary key,
);create table periodo
(cd_periodo number(2),
nm_periodo varchar2(50) CONSTRAINT perido_nm_periodo_nn not null,
CONSTRAINT periodo_cd_periodo_pk primary key,
);25 de março de 2016 at 1:26 am #108093Paulo WerneckParticipant@jefferson
mano, duas coisas pra facilitar…
Roda o script em partes, daí vc já consegue identificar qual está dando erro. Isso facilita pra vc e pra quem vai te ajudar.
E outra caso vc não consiga encontrar o erro cola o código usando a tag de código que tem aqui no site, para evitar esses emoticons.Abs
28 de março de 2016 at 8:17 pm #108098José Laurindo ChiappaModeratorSó pra mostrar como o método sugerido pelo colega (ie, quebrar os SQLs e executar copiando/colando um por um) funciona, eu experimentei o fazer no sql*plus (que é a ferramenta-cliente padrão no RDBMS Oracle) :
HR:@XE:SQL>create table classe
2 ( cd_classe number(8),
3 nr_anoletivo number(4) CONSTRAINT classe_nr_anoletivo_nn not null,
4 cd_escola number(6),
5 cd_grau number(2),
6 nr_serie number(2) CONSTRAINT classe_nr_serie_nn not null,
7 sg_turma varchar2(2) CONSTRAINT classe_sq_turma_nn not null,
8 cd_periodo number(2),
9 CONSTRAINT classe_cd_classe_pk primary key,
10 CONSTRAINT classe_nr_anoletivo_ck chek(nr_anoletivo in(>2000)),
11 CONSTRAINT classe_cd_escola_fk foreign key references ESCOLA(cd_escola),
12 CONSTRAINT classe_cd_grau_fk foreign key(cd_grau) references GRAU(cd_grau),13 CONSTRAINT classe_cd_periodo_fk foreign key references PERIODO(cd_periodo),
14 );
CONSTRAINT classe_cd_classe_pk primary key,
*
ERRO na linha 9:
ORA-00906: parÛntese esquerdo nÒo encontrado
==> veja que o sql*plus até nos aponta ** ONDE ** / em que linha ele encontrou sintaxe falhada, cfrme acima, yep ??? Fica fácil, ao se CONSULTAR a documentação Oracle (manual SQL Reference, onde é descrita a sintaxe do todos os comandos SQL) que o problema é que falta o parêntesis exigido na cláusula do PRIMARY KEY quando a constraint não está ma mesma linha da coluna – isso, inclusive, faz TODO O SENTIDO, se vc não indicar as colunas o coitado do RDBMS não tem como Adivinhar….
Aproveitei também e olhando o resto do SQL vi ** DIVERSOS ** outros erros, como a vírgula antes do fecha-parêntesis final (linha 13), a palavra-chava CHECK que estava escrita erradamente CHEK (várias linhas), check constraint não especificando a coluna aonde aplicar…. Aí ao executar a versão corrigida, veja que o “erro” da linha da PK foi corrigido…
HR:@XE:SQL>ed
Gravou file afiedt.buf1 create table classe
2 ( cd_classe number(8),
3 nr_anoletivo number(4) CONSTRAINT classe_nr_anoletivo_nn not null,
4 cd_escola number(6),
5 cd_grau number(2),
6 nr_serie number(2) CONSTRAINT classe_nr_serie_nn not null,
7 sg_turma varchar2(2) CONSTRAINT classe_sq_turma_nn not null,
8 cd_periodo number(2),
9 CONSTRAINT classe_cd_classe_pk primary key (cd_classe),
10 CONSTRAINT classe_nr_anoletivo_ck check(nr_anoletivo >2000),
11 CONSTRAINT classe_cd_escola_fk foreign key references ESCOLA(cd_escola),
12 CONSTRAINT classe_cd_grau_fk foreign key(cd_grau) references GRAU(cd_grau),13 CONSTRAINT classe_cd_periodo_fk foreign key references PERIODO(cd_periodo)
14* )
HR:@XE:SQL>/
CONSTRAINT classe_cd_escola_fk foreign key references ESCOLA(cd_escola),
*
ERRO na linha 11:
ORA-00906: parÛntese esquerdo nÒo encontradoHR:@XE:SQL>
==> …. e então os Próximos erros, como FK também ERRADAMENTE não especificando a(s) colunas… E com certeza outros irão aparecer após a correção destes, como (por exemplo) o fato que as tabelas-pai TEM que serem criadas ANTES das tabelas-filho , então no exemplo acima as tabelas-pai PERIODO e ESCOLA *** TEM *** que estarem ni início do script, para serem criadas ANTES da tentativa da criação da tabela CLASSE, que é filha (FK) delas….
okdoc ?? Então, SE esse seu script foi algo que alguém te passou pra vc criar PLZ sinaliza para a pessoa sobre esses erros todos, e SE é algo que vc está criando para estudo seu mesmo, PLZ checa no manual de “SQL Reference”as sintaxes todas …
[]s
Chiappa
-
AuthorPosts
- You must be logged in to reply to this topic.