SQL/Oracle——第七章 过程、函数(作业5)

本文介绍了Oracle SQL中的存储过程和函数的创建与应用,包括向dept表添加记录、查询员工信息、更新员工工资、计算平均工资等功能。通过实例展示了如何使用in、out和in out参数,以及如何处理多行查询结果和返回多个值。
摘要由CSDN通过智能技术生成

注意:本章只要求掌握前两节,综合性强

7.1存储过程
创建过程:
(1)过程代码书写在1.txt文件中;2)sql plus 中,@ d:\1.txt;    )
create or replace procedure p1 is 
变量定义;
begin

end;
/
--例题7-1
create or replace  procedure p6 is
begin
	insert into dept values(77,'市场拓展部','吉林');
end;
/
--调用过程:
1)exec p1;
2)begin
	 p1;
end;
/
//PS:可以将代码写入TXT文件中,再@
7.1.2存储过程的参数
1.in模式参数(例题7-5)
创建过程:
create or replace procedure i_d(x in number,y in varchar2,z in varchar2) is
//create or replace procedure i_d2(x in dept.deptno%type,y in dept.dname%type,z in dept.loc%type) is
begin
 insert into dept values(x,y,z);
end;
/

begin
	i_d2(23,'工程部','商丘');
end;
/

调用过程:(包含三种传参的方法:)
a)按名称传递(参数无顺序)
begin
  i_d(z=>'成都',x=>15,y=>'采购部');
end;
/

b)按位置传递(参数严格顺序)
begin
  i_d(28,'工程部','洛阳');
end;
/

c)混合传递(先按位置,后按名称)

begin
   i_d(26,'编辑部',z=>'开封');
end;
/



2.out模式参数
例题7-9:查询结果是一条记录
创建过程:
create or replace procedure s_d(num_d in dept.deptno%type,x out varchar2,y out dept.loc%type) is
 
begin
  select dname,loc into x,y from dept where deptno=num_d;
end;
/

调用过程:
declare
  i dept.dname%type;
  j dept.loc%type;
begin
  s_d(10,i,j);
  dbms_output.put_line(i||j);
end;
/

调用过程(exec):
var i varchar2(20);
var j varchar2(20);
exec s_d(10,:i,:j);
print :i :j;


或者:
create or replace procedure s_d(num_d in dept.deptno%type,x out varchar2,y out dept.loc%type) is

begin
  select dname,loc into x,y from dept where deptno=num_d;
  dbms_output.put_line(x||y);
end;
/

declare
  i dept.dname%type;
  j dept.loc%type;
begin
  s_d(10,i,j);
 dbms_output.put_line('调用过程'||i||j);
end;
/



[补充]

查询结果是多条记录:使用游标
create or replace procedure p3(x) is 
  cursor c1 is select ....;
begin

end;
/


例题6-19:

1)用PL/SQL方法:
declare
 cursor cur_emp(var_job in varchar2:='SALESMAN') is select empno,ename,sal from emp where job=var_job; 
 type record_emp is record
(
  x emp.empno%type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值