计算机系统应用教程网站

网站首页 > 技术文章 正文

Oracle存储过程和游标 oracle存储过程或者用法

btikc 2024-11-08 10:52:09 技术文章 3 ℃ 0 评论

--存储过程只编译一次,运行时不编译直接运行,效率较高

--传入部门编号,输出部门编号和名称

create or replace procedure dept_deptinfo_proc

--参数名称不能和列名一样,参数类型不能有长度

(deptnoin in dept.deptno%type , deptinfo out varchar2)

--as和is在此处无区别

as

temp varchar2(50);

begin

select '部门编号:' || deptno || ', 部门名称: ' || dname

into temp from dept

where deptno = deptnoin;

deptinfo := temp;

end dept_deptinfo_proc;


--针对员工表,写一个存储过程,输入参数为部门编号,输出部门员工的数量

create or replace procedure myemp_count_proc

(deptnoin in myemp.deptno%type,sdfs in varchar2)

as

temp number;

begin

select count(*) into temp

from myemp

where deptno = deptnoin;

dbms_output.put_line(sdfs || '部门编号:' || deptnoin || ',员工数量:' || temp);

end ;


--游标是一种数据集合对象

--使用游标输出某部门的员工姓名和工资

--游标必须用is不能使用as

create or replace procedure myemp_empinfo_proc

(deptnoin in myemp.deptno%type)

as

cursor empinfo is select * from myemp;

begin

for emp_num in empinfo loop

--每次循环,emp_num表示empinfo中的每条数据

if emp_num.deptno = deptnoin then

dbms_output.put_line('员工姓名:'|| emp_num.ename || ',工资:'|| emp_num.sal);

end if;

end loop;

end;


--调用存储过程方式之一

call myemp_count_proc(30,'hello');

call myemp_empinfo_proc(40);

--调用存储过程方式之二

--有输出参数时使用

declare

deptno dept.deptno%type;

deptinfo varchar2(50);

begin

deptno := 20;

deptinfo := '';

dept_deptinfo_proc(deptno,deptinfo);

dbms_output.put_line(deptinfo);

end;

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表