我试图执行此程序,但它只输出~
符号。
这是代码:
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;
答案 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;
/