create or replace function div(a number, b number) return number
as
begin
if b=0 then
begin
Raise_Application_error(-20001, '除数不能为0');
return 0;
exit;
end;
return (a/b);
end;
as
begin
if b=0 then
begin
Raise_Application_error(-20001, '除数不能为0');
return 0;
exit;
end;
return (a/b);
end;
解决方案 »
- ora-12514:TNS 监听程序当前无法识别连接描述中请求的服务
- 请教expdp导出exclude参数的问题,怎么前后日志和dump文件大小一样?
- plsql命令工具和sqlplus的区别
- MS SQL 改写成Oracle
- PL/SQL DEV连接数据库时跳出错误“Dynamic performance tables not accessible...”
- 关于oracle字符串处理的SQL问题
- PL/SQL 关键字颜色改不了
- 机器名改过后,再用sqlplus连接,报“无法处理服务器名”???
- WinXP上装Oracle 9i的问题
- redhat linux 8.0, oracle启动后出现的问题,请指点
- 我如何将我的ORACLE的数据库的所有创建表和视图的语法导出成一个文本文件?
- 哪位大侠知道在oracle下调试存储过程用什么工具??赐教
is
ret number;
begin
begin
ret : a/b;
EXCEPTION
WHEN OTHERS THEN
Raise_Application_error(-20001, '除数不能为0');
return -1;
end;
return ret;
end;
/
return number
is
ret number;
begin
ret := a/b;
return ret;
EXCEPTION
WHEN OTHERS THEN
return -1;
end;
/
ret := cast(a/b as decimal(10,3));
创建:
(a number, b number) return number
is
ret number;
begin
begin
ret:=a/b;
EXCEPTION
WHEN OTHERS THEN
Raise_Application_error(-20001, '除数不能为0');
return -1;
end;
return ret;
end;运行:
declare
div2 number;
begin
div2:=DIV(8,0);
dbms_output.put_line(div2);
end;出错:
declare
*
ERROR 位于第 1 行:
ORA-20001: 除数不能为0
ORA-06512: 在"TEST.DIV", line 9
ORA-06512: 在line 4---------------------------------------------------
to:beckhambobo(beckham)运行成功
但是能不能在除数为零时返回空值并打印“除数不能为0”
---------------------------------------------------
to:yfjyz(dd) 便已有错误:
行号= 11 列号= 4 错误文本= PLS-00103: 出现符号 ";"在需要下列之一时: if
---------------------------------------------------
还要问一句Raise_Application_error(-20001, 从哪来的?
return number
is
ret number;
begin
if b = 0 then
return 0;
end if;
ret := a/b;
return ret;
EXCEPTION
WHEN OTHERS THEN
return -1;
end;
/