oracle函数(in/out)

oracle函数

注意事项:

  • 必须要有返回值

语法规则:

create [or replace]  function  函数名(参数列表,包括:入参和出参)
return 函数值返回类型
as /is
PL/SQL主程序体

例子:带有输入参数 ,使用in关键字

--创建一个函数,输入学生学号,查出学生的排名
create or replace function queryOrder(v_stuid in varchar2)
return  number
is
pm number:=0;
score number:=0;
begin
select s.grade into score  from   student s  where  s.stuid=v_stuid;
--查询出比该学生成绩大的人数,然后再加1
select count(1)  into pm from student s where s.grade>score;
pm:=pm+1;
return pm;
exception 
 when no_data_found then 
 dbms_output.put_line('该学生不存在,或者该学生的成绩不存在');
end;

--函数的调用,方法1
select t.*, queryOrder ('000001') from student t  where t.stuid='000001';
--函数的调用,方法2
select queryOrder ('000001') from dual;

例子:带有输入参数 ,使用out关键字

 --查询某个班级的总成绩和人数
CREATE OR REPLACE
FUNCTION get_grade(
  stu_classno NUMBER,
  stu_count OUT NUMBER)
  RETURN NUMBER 
IS
  v_sum NUMBER;
BEGIN
  SELECT SUM(grade), count(*) INTO v_sum, stu_count
    FROM student WHERE classno=stu_classno;
  RETURN v_sum;
EXCEPTION
   WHEN NO_DATA_FOUND THEN 
      DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
   WHEN OTHERS THEN 
      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END get_grade;


DECLARE
  v_num NUMBER;
  v_sum NUMBER;
BEGIN
  V_sum :=get_grade('001', v_num);
  DBMS_OUTPUT.PUT_LINE('部门号为:001的成绩总和:'||v_sum||',人数为:'||v_num);
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值