存储过程的定义:
它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),使用的时候直接调用就可以;
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
存储过程的基本形式:
begin
[存储工程执行块]
end Test;
存储过程怎么调用呢:
1.如果是在包体内定义的存储过程,可以通过 call/exec 包名.存储过程名 来调用哦!
2.在Plsql中,可以通过 代码段形式调用存储过程
begin
pro_test;--存储过程名称
end;
存储过程小例子
1.基础表
uid | ucode | uname | remark |
1 | u01 | 阿尤一号 | |
2 | u02 | 阿尤二号 | |
3 | u03 | 阿尤三号 | |
12 | u12 | 阿尤十二 |
2.存储过程
create or replace procedure pro_test is
---变量定义,变量名+类型
v_uuid varchar(30);
v_uucode varchar(30);
v_uuname varchar(300);
begin-------下面是执行部分了
Declare
--声明游标
Cursor test_cursor is
select uu.uuid,uu.ucode,uu.uname from uuser uu ;
begin
open test_cursor ;
Loop---循环
--使用游标给变量赋值
fetchtest_cursor into
v_uuid,
v_uucode,
v_uuname;
---如果uuid的话,将其remark字段更新为hahahha ,如果不是则拼接字符串
if(v_uuid ='1')then
update uuser us set us.remark='hahahha' where us.uuid=v_uuid;
else
update uuser us set us.remark='测试'||v_uuname where us.uuid=v_uuid;
end if;
commit;
exit when test_cursor%Notfound;
end Loop;
close test_cursor;
end test_cursor;
end pro_test;
3.执行存储过程后表的结果大家可以自己试试哦!
uid | ucode | uname | remark |
1 | u01 | 阿尤一号 | hahahha |
2 | u02 | 阿尤二号 | 测试阿尤二号 |
3 | u03 | 阿尤三号 | 测试阿尤三号 |
12 | u12 | 阿尤十二 | 测试阿尤十二 |