您的位置:首页 > 数据库 > Oracle

Snail—ORACLE基础之存储过程学习(四)

2014-08-01 12:11 681 查看
今天学习了ORACLE的存储过程,接触了PL/SQL 

PL/SQL 也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)PL/SQL 是Oracle数据库对SQL语句的扩展

先上代码

基本结构就是如下代码所示

--存储过程
declare

begin

end;


下面代码的大体意思就是,如果就记录就更新操作,没有就插入操作

--声明变量在declare中
declare
--变量名 类型 值
v_rid number:=1;
--此变量与acl表中f_id的类型一样
v_fid acl.f_id%type;
v_p acl.permsition%type := 1;
v_c number;
--数据业务
begin
v_fid:=2;
--选择的值存放在v_c中
select count(*) into v_c from acl where f_id=v_fid and v_rid=r_id;
--if判断
if v_c>=1 then
update acl set permsition=v_p where f_id=v_fid and r_id=v_rid;
else
insert into acl(id, r_id, f_id, permsition) values(SEQ_ACL_ID.NEXTVAL,v_rid, v_fid, v_p);
--if必须要有结束语句   end if;
end if;
--当发生异常时会有如下处理。
exception
when others then
--类似于C语言终端的输出一样。
dbms_output.put_line('error');
end;


loop循环

---loop循环
declare
type v_arr is varray(3) of number;
v_rid acl.r_id%type:=1;
--定义一个数组并且初始化
v_fid_arr v_arr:=v_arr(1,2,3);
v_p number := 0;
v_i number:=1;
begin
v_fid_arr(1) := 1;
v_fid_arr(2) := 2;
v_fid_arr(3) := 3;
--循环开始
loop
DBMS_OUTPUT.PUT_LINE(v_fid_arr(v_i));
v_i := v_i+1;
if v_i > 3 then exit;
end if;
--循环必须要有结束语
end loop;
end;
for循环---v_fid_arr(v_i)取数组下标为v_i 的值

----for循环
declare
--自定义一个数组 类型都是数值型的 长度为3
type v_arr is varray(3) of number;
v_rid acl.r_id%type:=1;
v_fid_arr v_arr:=v_arr(1,2,3);
v_p number := 0;
begin
v_fid_arr(1) := 1;
v_fid_arr(2) := 2;
v_fid_arr(3) := 3;
for v_i in 1..3  ---循环主体
loop
DBMS_OUTPUT.PUT_LINE(v_fid_arr(v_i));
end loop;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: