PL/SQL程序可划分成称为块的结构,每一个块都包含PL/SQL和SQL语句。PL/SQL代码块包含以下结构:
declare
--申明部分
begin
--执行部分
end;
最简单的程序输出之万物可Hello World
declare
begin
dbms_output.put_line('Hello World');
end;
根据给出的矩形的面积和高度计算其宽度,定义变量 变量赋值 申明变量的时候可以赋初始值,定义常量constant时,常量是不可变并且必须赋初始值
declare
v_width integer;
v_height integer:= 3;
v_area integer:= 12;
begin
v_width := v_area / v_height;
dbms_output.put_line('v_width = ' || v_width);
exception
when ZERO_DIVIDE then
dbms_output.put_line('Division by zero');
end;
定义常量constant
declare
v_pi constant number := 3.14;
v_r number := 3;
v_area number;
begin
v_area := v_pi*v_r*v_r;
dbms_output.put_line('v_area = ' || v_area);
end;
字符日期数据类型变量
declare
v_name varchar2(30) := '张三';
v_date date := sysdate;
begin
dbms_output.put_line('v_name = ' || v_name);
dbms_output.put_line('v_date = ' || v_date);
end;
隐式游标及其特性 只能返回一行数据 返回多行或者没有数据都会报错
declare
v_name varchar2(30);
v_sal number;
begin
select ename,sal into v_name,v_sal from emp where empno = 7499;
dbms_output.put_line('v_name = ' || v_name);
dbms_output.put_line('v_sal = ' || v_sal);
dbms_output.put_line(v_name ||'薪水是 '|| v_sal);
end;
隐式游标 防报错 加聚合函数
declare
v_name varchar2(30);
v_sal number;
begin
select max(ename),max(sal) into v_name,v_sal from emp ;
dbms_output.put_line('v_name = ' || v_name);
dbms_output.put_line('v_sal = ' || v_sal);
dbms_output.put_line(v_name ||'薪水是 '|| v_sal);
end;
%type/%rowtype 定义数据类型
%type 引用数据库中的某列的数据类型或某个变量的数据类型
%rowtype 引用数据库中的一行作为数据类型
declare
v_name emp.ename%type ;
v_sal emp.sal%type;
begin
select max(ename),max(sal) into v_name,v_sal from emp ;
dbms_output.put_line('v_name = ' || v_name);
dbms_output.put_line('v_sal = ' || v_sal);
dbms_output.put_line(v_name ||'薪水是 '|| v_sal);
end;
declare
v_all emp%rowtype;
begin
select ename,sal into v_all.ename,v_all.sal from emp where empno = 7499;
dbms_output.put_line('v_name = ' || v_all.ename);
dbms_output.put_line('v_sal = ' || v_all.sal);
dbms_output.put_line(v_all.ename ||'薪水是 '|| v_all.sal);
end;