1.匿名块的编写
块的结构和变量的声明
declare
变量声明部分;
begin
逻辑处理执行部分;
end;
/
便于维护(模块化的SQL)
提高数据库的安全性(把SQL原子操作封装起来了,更安全)
提高性能(第一次创建对象的时候,数据库保存的是编译好的二进制,重复执行不会再进行编译)
简化使用(重复调用)
2.简写一个最简单的匿名块
(如果块中不需要使用变量,可以省略变量声明部分)
如果想看到PL/SQL在SQLPLUS环境中的输出部分
需要设置serveroutput为on,默认是off,即不输出PL/SQL的输出结果
set serveroutput on
begin
dbms_output.put_line('--------------------------------------');
dbms_output.put_line(' hello world');
dbms_output.put_line('--------------------------------------');
end;
/
3.变量
变量就是数据的容器,存储数据用的
变量一定要有数据类型
数据类型分为简单数据类型和复杂数据类型
%type就是声明一个变量和另外一个变量数据类型相同
或与某表中的某列数据类型相同
declare
v1 number; --显式声明简单的数据类型
v2 v1%type; --不必知道V1是啥数据类型,通过%type就可以使V2与V1数据类型一致
v3 emp.empno%type; --V3的数据类型与EMP表中EMPNO字段的数据类型一致
begin
v1:=100;
v2:=200;
v3:=300;
dbms_output.put_line(v1||' '||v2||' '||v3);
end;
/
PLSQL代码中的注释
--行级注释
/* ..... */多行注释
变量的作用范围
外部模块变量可以传到内部块使用
内部块的变量不会影响到外部块
4.取表中的数据对变量进行赋值
使用select... into 变量来实现通过表中的数据对变更的赋值
declare
v1 emp.empno%type;
v2 emp.ename%type;
v3 emp.sal%type;
begin
select empno,ename,sal into v1,v2,v3 from emp where empno=7900;
dbms_output.put_line(v1||' '||v2||' '||v3);
end;
/
四种隐式游标与DML有关,广泛应用于IF-ELSE以及循环判断条件中
sql%rowcount number类型
sql%found boolean类型
sql%notfound boolean类型
sql%isopen boolean类型
declare
v1 emp.deptno%type :=20;
v2 number;
begin
delete emp where deptno=v1;
v2 := sql%rowcount;
dbms_output.put_line(v2);
rollback;
end;
/