Pular para o conteúdo
  • This topic has 2 replies, 3 voices, and was last updated 8 years, 7 months ago by Avatar photoJosé Laurindo Chiappa.
Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #108088
    Avatar de jefferson pereirajefferson pereira
    Participant

      Pessoal quando coloco este codigo no oracle express
      da seguinte erro ORA-00906 missing left parenthesis
      mas nao consigo achar o erro

      create 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,
      );

      #108093
      Avatar de Paulo WerneckPaulo Werneck
      Participant

        @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

        #108098
        Avatar photoJosé Laurindo Chiappa
        Moderator

          Só 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.buf

          1 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 encontrado

          HR:@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

        Viewing 3 posts - 1 through 3 (of 3 total)
        • You must be logged in to reply to this topic.
        plugins premium WordPress