在PL / SQL中反转给定的数字程序

时间:2017-05-16 04:35:02

标签: oracle plsql

我试图执行此程序,但它只输出~符号。

这是代码:

DECLARE
   N_NUM   NUMBER := 234;
   N_REM   NUMBER;
   N_REV   NUMBER := 0;
BEGIN
   WHILE N_NUM != 0
   LOOP
      N_REM := MOD (N_NUM, 10);
      N_NUM := (N_NUM / 10);
      N_REV := N_REV * 10 + N_REM;
   END LOOP;

   DBMS_OUTPUT.PUT_LINE (N_REV);
END;

4 个答案:

答案 0 :(得分:1)

在除以10之前,你必须减去余数。以下代码将起作用。

DECLARE
   N_NUM   NUMBER := 234;
   N_REM   NUMBER;
   N_REV   NUMBER := 0;
BEGIN
   WHILE N_NUM <> 0
   LOOP
      N_REM := MOD (N_NUM, 10);
      N_NUM := ( (N_NUM - N_REM) / 10);
      N_REV := N_REV * 10 + N_REM;
   END LOOP;

   DBMS_OUTPUT.PUT_LINE (N_REV);
END;

答案 1 :(得分:1)

使用Floor功能,如下所示:

N_NUM := FLOOR(N_NUM/10)

由于此楼层功能仅返回23而不是23.4

答案 2 :(得分:1)

#

答案 3 :(得分:0)

第二个选项是使用REVERSE()功能。
但是,该函数想要输入CHAR而不是NUMBER。
所以你必须先转换它。

例如:

DECLARE
   N_Num NUMBER := 234;
   N_Rev NUMBER := 0;
BEGIN
   SELECT REVERSE(TO_CHAR(N_Num)) INTO N_Rev FROM Dual;
   DBMS_OUTPUT.PUT_LINE (N_Rev);
END;
/