es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es el programa en PLSQL para verificar si un número es primo utilizando una función y un procedimiento?

declare
K number;
L number;
f number;
function prime(n in number, i in number) return flag is
begin
i:=2;
flag:=1;
n:=&n;
for i in 2..n/2
loop
if mod(n,i)=0
then
flag:=0;
exit;
end if;                                                                                             
end loop;
if flag=1
then
dbms_output.put_line('prime');
else
dbms_output.put_line('not prime');
end if;
return flag;
end;
begin
k:=4;
L:=1;
f:= prime(n,i);
dbms_output.put_line('given number is ' || f);
end;
/

Estoy obteniendo la siguiente salida, me pregunto qué está mal en mi código:
lang-none
Ingrese el valor de n: 4
viejo 9: n:=&n;
nuevo 9: n:=4;
declare
*
ERROR en la línea 1:
ORA-06540: PL/SQL: error de compilación
ORA-06553: PLS-906: No es posible la compilación

DECLARE
    num  NUMBER;
    c    NUMBER;

    PROCEDURE fact (x IN NUMBER, f OUT NUMBER) IS
        l_var  NUMBER := 1;
    BEGIN
        FOR i IN 1 .. x LOOP
            l_var := l_var * i;
        END LOOP;
        f := l_var;
    END;

BEGIN
    num := 6;
    fact (num, c);
    DBMS_OUTPUT.put_line('El factorial de ' || num || ' es ' || c);
END;

En este segundo código, el resultado no se muestra, no solo para este, incluso para otros códigos muestra la línea “Procedimiento PL/SQL completado con éxito”, pero los resultados no se muestran. ¿Qué está mal?

Tags:  

Answer

  1. Avatar for davy.ai

    Para el primer código, parece que el error está en la sintaxis de la línea “n:=&n;”. “&” es el código HTML para ‘&’, por lo que debe reemplazarse solo con “&”. Así que la línea debería ser “n:=&n;”.

    Para el segundo código, parece que el comando DBMS_OUTPUT.PUT_LINE no se está ejecutando o mostrando correctamente. Puede haber varias razones para esto, como el búfer de salida que está lleno o la configuración de salida del servidor que está desactivada. Una forma de verificar si el búfer de salida está lleno es intentar aumentar el tamaño del búfer con el comando “SET SERVEROUTPUT ON SIZE <tamaño>”. Otra forma de verificarlo es intentar usar el comando SQL*Plus “SPOOL” para escribir la salida en un archivo en lugar de imprimirlo en la consola.</tamaño>

Comments are closed.