PL/SQL

在sqlplus中serveroutput是默认关闭的,使用下面的方法可以打开

set serveroutput on

显示随机数

begin
dbms_output.put_line(dbms_random.value(1,100));
end;
declare
rnd number;
begin
rnd:=floor(dbms_random.value(1,100));
dbms_output.put_line(rnd);
end;

在一行上输出SCOTT的薪水及所在部门名称

declare
v_sal  number(7,2);
v_dname  varchar2(14);
begin
select sal,dname into v_sal,v_dname from emp join dept using(deptno) where ename='SCOTT';
dbms_output.put_line('sal:'||v_sal||' dname:'||v_dname);
end;

子程序
本质就是具名块
一次编译,多次运行

将逻辑上相关联的PL/S인L类型、变量常量、子程序、游标和异常等封裝在一起
可以将个包看作是一个小型的应用程序
触发器
在一个事件之前或之后触发
通常是用于完成数据同步维护、关联事务处理、预方误操作等情况

 

输入输出
ー大多数PL/SQL的输入輸出是通过SQL语句完成的,比如通过SQL存取数据
其他的PL/SQL输入输出是通过 Oracle自身提供的相关包来实现
DBMS OUTPUT
HTF    用在网页编写当中去使用的
HTP    用在网页编写当中去使用的
DBMS_PIPE    可以将在一个实例上运行的不同的会话之间的通讯
UTL_FILE    文件的读写操作
UTL_HTTP
UTL_SMTP    发邮件的

 

数据抽象
游标
复合数据
集合
记录
抽象数据类型
%TYPE
DEMO 2.1
%ROWTYPE
DEMO3取出最高薪水和最低薪水差距最大的薪水级别的信息

declare
v_sal  emp.sal%type;
v_dname  dept.dname%type;
begin
select sal,dname into v_sal,v_dname from emp join dept using(deptno) where ename='SCOTT';
dbms_output.put_line('sal:'||v_sal||' dname:'||v_dname);
end;
declare
cursor sg is select * from (select * from salgrade order by hisal-losal desc) where rownum<=1;
v_sg    sg%rowtype;
begin
open sg;
fetch sg into v_sg;
dbms_output.put_line('grade:'||v_sg.grade||'  losal:'||v_sg.losal||'  hisal:'||v_sg.hisal);
close sg;
end;

 控制语句

declare
maxgap  number:=0;
maxsg  salgrade%rowtype;
begin
for  v_sg in (select * from salgrade)
  loop
    dbms_output.put_line('grade:1'||v_sg.grade||'  losal:'||v_sg.losal||'  hisal:'||v_sg.hisal);
    if maxgap<v_sg.hisal-v_sg.losal then
      maxsg:=v_sg;
    end if;
  end loop;
dbms_output.put_line('grade:'||maxsg.grade||'  losal:'||maxsg.losal||'  hisal:'||maxsg.hisal);
end;

PL/SQL架构

PL/SQL引擎

 

posted @ 2021-09-22 10:43  十方劫  阅读(72)  评论(0编辑  收藏  举报