在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引擎
本文摘自 :https://www.cnblogs.com/