Plsql程序和异常

时间:2018-03-05 19:19:13

标签: oracle stored-procedures plsql

写一个PL / SQL程序:当某人输入一个数字时,它会打印该数字。否则,它将显示错误消息。

3 个答案:

答案 0 :(得分:0)

不太聪明,但会让你开始。

使用正则表达式(REGEXP_LIKE),检查值是否为数字,由

组成
  • 任意数量的数字[0-9] +
  • 可选|
  • 后跟一个小数点。 (反斜杠在这里是为了逃避它,因为dot表示正则表达式中的任何字符)
  • 后跟任意数字的数字[0-9] +
  • ^和$ anchors 表示输入值的开头和结尾(即必须以数字开头和结尾)

这是:

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>

答案 1 :(得分:0)

您还可以尝试将输入字符串转换为数字,然后捕获潜在的转换错误

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;

答案 2 :(得分:0)

你可以这样做,

set serveroutput on;

BEGIN
    DBMS_OUTPUT.PUT_LINE('&number'+0);
EXCEPTION
    WHEN VALUE_ERROR THEN
        DBMS_OUTPUT.PUT_LINE('Error');
END;
/