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

来源:互联网 发布:js开源特效 编辑:程序博客网 时间:2024/04/28 00:10

今天学习了ORACLE的存储过程,接触了PL/SQL 

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

先上代码

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

--存储过程declarebeginend;

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

--声明变量在declare中declare --变量名 类型 值v_rid number:=1;--此变量与acl表中f_id的类型一样v_fid acl.f_id%type;v_p acl.permsition%type := 1;v_c number;--数据业务beginv_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循环declaretype 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--自定义一个数组 类型都是数值型的 长度为3type 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;




0 0
原创粉丝点击