Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 6 meses atrás por Rodrigo Mesquita.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #89644
    ecKo
    Participante

      Bom Dia,

      Estou com uma dúvida e preciso de uma ajuda da galera pois estou tentando criar uma Function que verifica os 5 primeiros Numeros Perfeitos e a mesma apresenta erros na hora de compilar:

      CREATE OR REPLACE FUNCTION N_Perfeito (I NUMBER, J NUMBER, PERFEITO NUMBER,X NUMBER)
      RETURN NUMBER
      AS
      I NUMBER(10);
      J NUMBER(10);
      PERFEITO NUMBER(10);
      X NUMBER(10);

      DECLARE
      I := 1;
      J := 1;
      PERFEITO := 0;
      X := 1;
      BEGIN
      FOR I = 1, X < 5, I:= I +1; LOOP J:= J + 1; IF I <> J;
      BENGIN
      PERFEITO = PERFEITO +J;
      ELSEIF I = PERFEITO;
      DBMS_OUTPUT.PUT_LINE(I);
      X := X +1;
      EXIT WHEN X < 5; END LOOP; RETURN (I); END; Por Favor se alguém puder me ajudar. Obrigado!

      #89645
      Manoel872
      Participante

        Bom dia,

        Existe um BENGIN na sua procedure o certo seria BEGIN.

        Att,

        Manoel Jr

        #89646
        Rodrigo Mesquita
        Participante

          Tem alguns erros de programação

          – Em uma função não se usa Declare
          – Voce não pode declarar variáveis de entrada com o mesmo nome das variaveis declaradas dentro da funcao.
          – A atribuição de valores As variáveis tem que ser dentro do corpo do bloco (begin…End;)
          – No If, voce tem que colocar o Then (if…”condição”..Then..”código”..End If;
          – Não existe esse comando FOR I = 1, X < 5, I:= I +1; voce poderia usar um While e em vez de separar por virgulas separe com And
          – PERFEITO = PERFEITO +J; para está variável receber este valor deve- se colocar := (PERFEITO := PERFEITO +J;)

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.