pl/sql块:
1 匿名块 ----不能存储,不能共享
2 存储过程 函数 触发器 包 ----带有名称的块,可以存储在oracle服务器上,可以共享和多次调用。
1 匿名块
begin
sql
sql
end;
匿名块示例:
SQL >begin
for i in 1..1000 loop
insert into t1 values(i);
end loop;
commit;
end;
/
一个pl/sql应用程序由一个或者多个块组成。
pl/sql语言基础
块结构:
declare
声明变量(常量 变量 游标)
begin
执行部分
exception
异常部分(可选)
end;
set serveroutput on
服务器的输出信息打印在plus窗口里
SQL> set serveroutput on
SQL>
SQL> begin
2 dbms_output.put_line(‘Hello World‘);
3 end;
4 /
Hello World
PL/SQL procedure successfully completed
匿名块只能在当前用户当前会话使用,无法被其他用户调用。
命名块:带有名称的匿名块
变量作用:传递数据
案例:打印员工的姓名和工资
set serveroutput on
declare
v_ename varchar2(10);
v_sal number(7,2);
begin
select ename,sal
into v_ename,v_sal
from emp where empno=#
dbms_output.put_line(‘Employees name is: ‘||v_ename);
dbms_output.put_line(‘Employees sal is: ‘ ||v_sal);
end;
/
Employees name is: SCOTT
Employees sal is: 3000
PL/SQL procedure successfully completed
set serveroutput on
declare
v_ename varchar2(10);
v_sal number(7,2);
c_empno constant number(4):=7788; ----声明一个常量
begin
select ename,sal
into v_ename,v_sal
from emp where empno=c_empno;
dbms_output.put_line(‘Employees name is: ‘||v_ename);
dbms_output.put_line(‘Employees sal is: ‘ ||v_sal);
end;
定义变量时赋值或者执行时赋值
set serveroutput on
declare
v_ename varchar2(10);
v_sal number(7,2);
c_empno number(4);
begin
c_empno:=7788;
select ename,sal
into v_ename,v_sal
from emp where empno=c_empno;
dbms_output.put_line(‘Employees name is: ‘||v_ename);
dbms_output.put_line(‘Employees sal is: ‘ ||v_sal);
end;
set serveroutput on
declare
v_ename varchar2(10);
v_sal number(7,2);
begin
select ename,sal
into v_ename,v_sal
from emp where empno=#
dbms_output.put_line(‘Employees name is: ‘||v_ename);
dbms_output.put_line(‘Employees sal is: ‘ ||v_sal);
exception
when NO_DATA_FOUND then
dbms_output.put_line(‘Please input currect number!‘);
end;
定义布尔类型,并且设置默认值
v_valid boolean not null default false;
v_name emp.ename%TYPE; -----变量类型会随emp.ename字段类型改变,也就是%type保证变量的数据类型和表中字段的数据类型一致
原文:http://duxiutemp.blog.51cto.com/10788420/1875511