0
votes

Print Somme de N Numéros dans PLSQL

CREATE OR REPLACE FUNCTION printsum(n IN number) IS
res number:=0;
BEGIN
while(n>0)
LOOP
res:=res+n;
n:=n-1;
EXIT WHEN n=0;
END LOOP;
dbms_output.put_line(' result of sum: '||res);
END;
/
I'm trying to print sum of n numbers, but I'm getting the following error:
  Warning: Function created with compilation errors.

0 commentaires

3 Réponses :


1
votes

Il y a peu d'erreurs dans votre code.

1) fonction doit avoir un retourner mais votre code avait manquant retour Début et à la fin.

2) dans le paramètre ne peut pas être réaffecté à l'intérieur du code. Donc, vous devez copier le paramètre dans dans une variable à itérer.

Essayez ceci: xxx

sortie: xxx


0 commentaires

0
votes

L'extrait de code suivant est la solution: xxx


0 commentaires

4
votes

Deux choses:

  1. numéro strictement parlant n'est pas nécessairement intégral afin d'utiliser pls_integer ou au moins vérifier le code que l'argument transmis est intégral li>
  2. Si la question est de demander comment renvoyer la somme des premier entiers positifs, la réponse correcte est d'utiliser la formule de formulaire fermée: N * (N + 1) / 2 LI> ol>

    Utilisation de la formule vous donne une réponse de temps constante. P>

    function printsum(n pls_integer) return n is
    begin
      if(n < 0) then raise value_error; end if; -- or a more meaningful exception
      return (n * (n + 1) / 2);
    end;
    


0 commentaires