DECLARE
/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */
BEGIN
/* 执行部分: 过程及SQL 语句 , 即程序的主要部分 */
EXCEPTION
/* 执行异常部分: 错误处理 */
END
其中 执行部分是必须的
举个例子给你说明吧: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数据库内部去执行了一样。可以跟存储过程一样理解。
sqldeveloper没用过,但是你这样的程序在plsql上是有错的。一些格式不同造成的吧。比如第一行新值delare,plsql中新值这两个字符肯定是不识别的。
还有end后,plsql中需要用符合/来宣告程序块结束。
然后再回车就可以执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)