帮我写一个最简单的函数!谢谢!

lynx800602 2003-10-13 05:53:38
输入两个参数:除数和被除数返回商,要求有异常处理。数字要一定精度
谢谢!
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-10-14
  • 打赏
  • 举报
回复
create or replace function div(a number, b number)
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;
/
lynx800602 2003-10-14
  • 打赏
  • 举报
回复
to: LGQDUCKY(飘)
创建:
(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, 从哪来的?
robixiao 2003-10-13
  • 打赏
  • 举报
回复
I suggest one point as below:
ret := cast(a/b as decimal(10,3));
beckhambobo 2003-10-13
  • 打赏
  • 举报
回复
create or replace function div(a number, b number)
return number
is
ret number;
begin
ret := a/b;
return ret;
EXCEPTION
WHEN OTHERS THEN
return -1;
end;
/
LGQDUCKY 2003-10-13
  • 打赏
  • 举报
回复
create or replace function div(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;
/
yfjyz 2003-10-13
  • 打赏
  • 举报
回复
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;

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧