oracle从入门到精通
发表在Oracle图书答疑 2019-03-18 悬赏:5 学分 《零基础学Oracle》第10章 储存过程、函数和触发器
是否精华
版块置顶:

create or replace function get_avg_pay(num_deptno number) return number is

number_avg_pay number;

begin

  select avg(sal) into get_avg_pay from emp where deptno=num_deptno;

  return (round(get_avg_pay,2));

  exception

    when no_data_found then

      dbms_output.put_line('该部门不存在');

      return (0);

      end;

为什么根据书上的函数配置后调用函数时提示该函数无效(invalid)

create or replace procedure select_dept (
num_deptno in number,
var_dname out dept.dname%type,
var_loc   out dept.loc
) is
begin
  select dname,loc into var_dname,var_loc from dept where deptno=num_deptno;
  exception
    when no_data_found then
      dbms_output.put_line('该部门不存在!');
      end select_dept;

这个过程也是提示invalid,现在我初步了解过程与函数的编写,但是不知道如何看语句错在哪里

分享到:
精彩评论 1
大米粥
学分:1330 LV8
TA的每日心情
伤心
2017-05-02 10:51:31
2019-04-01
沙发

1、注意区分函数名和变量名,正确的函数定义代码如下:

create or replace function get_avg_pay(num_deptno number) return number is

number_avg_pay number;

begin

  select avg(sal) into number_avg_pay from emp where deptno=num_deptno;

  return (round(number_avg_pay,2));

  exception

    when no_data_found then

      dbms_output.put_line('该部门不存在');

      return (0);

      end;

加黑的位置,你写成函数名了。

2、定义变量var_loc的数据类型错误,应该为var_loc   out dept.loc%type

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照