ORACLE——存储过程(procedure)

--回顾游标
declare
cursor cur is 
select  dname,avg(sal)
from emp inner join dept on dept.deptno=emp.deptno
group by dept.deptno,dname;
v_name dept.dname%type;
v_avg emp.sal%type;
begin
 open cur;
  loop
    fetch cur into v_name,v_avg;
    exit when cur%notfound;
    dbms_output.put_line(v_name||' '||v_avg);
  end loop;
 close cur;
end;

--代码块 3种
--1、匿名块(可以直接嵌套在高级语言中使用)
declare
begin
end;
--java中statement
--st.execute("select * from emp"); --"..."中可以嵌入匿名块
--2、存储过程:取了名字的一个代码块。(关键字:procedure)
--注意:可以有输入参数和输出参数。
--语法:
create or replace procedure 名字
is / as
  --声明变量的位置。。。
begin
  --。。。
end;
--例子:打印emp表中的人数。(创建)
create or replace procedure p_getCount
is
  v_num integer;
begin
  select count(*) into v_num from emp;
  dbms_output.put_line(v_num);
end;
--运行存储过程
--方法1:在sql窗口用匿名块。
begin
 p_getCount;   --可以直接在java中调用
end;
--方法2:在command窗口执行
execute p_getCount;

--把上面的游标代码写成存储过程

create or replace procedure p_cur_test
as
cursor cur is 
select  dname,avg(sal)
from emp inner join dept on dept.deptno=emp.deptno
group by dept.deptno,dname;
v_name dept.dname%type;
v_avg emp.sal%type;
begin
 open cur;
  loop
    fetch cur into v_name,v_avg;
    exit when cur%notfound;
    dbms_output.put_line(v_name||' '||v_avg);
  end loop;
 close cur;
end; 
--调用 
begin  
 p_cur_test; 
end;

--3、函数:取了名字的一个代码块。(关键字:function)
--注意:可以有输入参数,必须有返回值。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值