Oracle-判断一个数是不是质数

判断质数的方法,从2开始,凡是除了自身和1之外,都不能被整除的,就是质数。

CREATEOR REPLACE

  FUNCTION isPrime(

      num IN NUMBER)

    RETURN BOOLEAN

  IS

  BEGIN

    IF(num<=1) THEN

      RETURN FALSE;

    END IF;

    FOR i IN 2..(num-1)

    LOOP

      IF(mod(num,i)=0) THEN

        RETURN FALSE;

      END IF;

    END LOOP;

    RETURN TRUE;

  END;



//调用这个函数

declare

aboolean;

begin

a :=isPrime(27);

if a then

  dbms_output.put_line('质数');

else

  dbms_output.put_line('非质数');

end if;

end;

返回结果:false

解释:不能直接selectisPrime(27) from dual

oracle 没有 boolean 的数据类型,但是 plqsl 里是有的,所以 ls 的有问题,而在 function 写的没有问题

你可能感兴趣的:(Oracle-判断一个数是不是质数)