【发布时间】:2018-08-13 13:08:59
【问题描述】:
编写一个 PL/SQL 过程:当有人输入一个数字时,它会打印该数字。否则会显示错误信息。
【问题讨论】:
-
那么,您有问题吗?除了,“有人会帮我做作业吗?”
标签: oracle stored-procedures plsql
编写一个 PL/SQL 过程:当有人输入一个数字时,它会打印该数字。否则会显示错误信息。
【问题讨论】:
标签: oracle stored-procedures plsql
您也可以尝试将输入字符串转换为数字,然后捕获潜在的转换错误
Create Or Replace Procedure is_number(p_num varchar2) Is
v_num Number;
Begin
v_num := to_number(p_num);
dbms_output.put_line(v_num);
Exception
When VALUE_ERROR Then
dbms_output.put_line(p_num || ' is not a number');
End is_number;
【讨论】:
不太聪明,但会让你入门。
使用正则表达式(REGEXP_LIKE),检查value是否为数字,由
这里是:
SQL> create or replace procedure p_test (par_input in varchar2)
2 is
3 begin
4 if regexp_like(par_input, '^[0-9]+|(\.[0-9]+)$') then
5 dbms_output.put_line(par_input);
6 else
7 dbms_output.put_line('Error');
8 end if;
9 end;
10 /
Procedure created.
SQL> set serveroutput on;
SQL>
SQL> begin
2 p_test('2');
3 p_test('2.13');
4 p_test('x');
5 p_test('&#');
6 end;
7 /
2
2.13
Error
Error
PL/SQL procedure successfully completed.
SQL>
【讨论】:
你可以这样做,
set serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&number'+0);
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('Error');
END;
/
【讨论】: