在oracle中 PLsql程序块必须包括哪几部分?

在oracle中 PLsql程序块必须包括哪几部分?,第1张

oracle中 PL/sql程序块必须包括声明部分,可执行部分,异常处理部分。

PL/SQL程序都是以块(block)为基本单位。整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。

其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。而且每条语句均由分号隔开。

举个例子给你说明吧:

1.编写PL程序块循环给scott.emp表中所有职工增加工资,每次增加100元,直到平均工资高于5000或任一职工的工资超过6000元为止,最后显示出给所有员工一共增加了多少工资。

2.编写一个PL块,定义一个静态游标存储scott.emp表中所有雇员的员empno、ename和sal,并使用循环打印出所有数据。

3.编写一个存储过程comSalary,分别统计储scott.emp表中所有部门的平均工资,并且只显示出工资超过3500的部门。并编写pl块调用此存储过程。

1.

declare

avg_sal number

max_sal number

i integer

begin

i:=0

loop

select avg(sal),max(sal) into avg_sal,max_sal from emp

if avg_sal<=5000 and max_sal<=6000 then

update emp set sal=sal+100

i:=i+1

else

exit

end if

end loop

commit

dbms_output.put_line('共增加工资:'||to_char(i*100))

end

2.

declare

cursor c1 is select empno,ename,sal from emp

begin

for acct in c1 loop

dbms_output.put_line('员工号:'||acct.empno||' 员工姓名:'||acct.ename||' 工资:'||acct.sal)

end loop

end

3.

create or replace procedure comSalary

as

cursor c1 is

select deptno,avg(sal) avg1 from emp group by deptno

begin

for acct in c1 loop

if acct.avg1 >3500 then

dbms_output.put_line('部门:'||acct.deptno||' 工资:'||acct.avg1)

end if

end loop

end

其实Oracle程序块,是基于oracle编程的范畴,相当于本来希望通过用其他语言写程序对oracle数据库进行 *** 作的功能,直接放在oracle数据库内部去执行了一样。可以跟存储过程一样理解。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11121907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存