存储过程与PL/SQL基本用法

存储过程的优点:
1.存储过程只在创造的时候进行编译,以后每次执行存储过程都不再需要重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
5.存储过程中可以结合PL/Sql进行简单的逻辑操作。

一:基本语法结构
1.基本结构
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter1 [model][U1] datatype1,parameter2 [model] datatype2 …)]
IS [AS]
BEGIN
PL/SQL Block;
END [procedure_name];

其中: procedure_name是存储过程的名字,parameter用于指定参数,model用于指定参数模式,datatype用于指定参数类型, IS [AS]用于开始PL/SQL代码块。
注:当定义存储过程的参数时,只能指定数据类型,不能指定数据长度
1)建立存储过程时,既可以指定存储过程的参数,也可以不提供任何参数。

2)存储过程的参数主要有三种类型:输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),其中IN用于接收调用环境的输入参数,OUT用于将输出数据传递到调用环境,IN OUT不仅要接收数据,而且要输出数据到调用环境。

3)在建立存储过程时,输入参数的IN可以省略。 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条。

eg1:
CREATE OR REPLACE PROCEDURE pro_learing
(
p_para1 varchar2:=’参数一’,
p_para2 nvarchar2 default ‘参数二’,
p_para3 out varchar2,
p_para4 in out varchar2
)
IS
BEGIN
DECLARE
v_para5 varchar2(20);
BEGIN
v_para5:=’输入输出:’||[U2] p_para4;
p_para3 := ‘输出:’||p_para1||p_para2;
p_para4 := v_para5;
END;
END pro_learing;
片这里写代码片
“`
CREATE OR REPLACE PROCEDURE query_emp
(id IN emp.empno%TYPE,
name OUT emp.ename%TYPE,
salary OUT emp.sal%TYPE) IS
BEGIN
SELECT ename, sal INTO name, salary
FROM emp
WHERE empno = id;
END query_emp;
–执行存储过程
DECLARE
emp_name emp.ename%TYPE;
emp_sal emp.sal%TYPE;
BEGIN
query_emp(7369, emp_name, emp_sal);
END;

eg2:
创建存储过程

if条件的判断语法:
IF V_TEST=1 THEN
BEGIN
do someting
END;
END IF;
–IF范例
create or replace procedure myp12
is
begin
declare
test number(10);
begin
test:=10;
if test=10 then
dbms_output.put_line(‘相同’);
else
dbms_output.put_line(‘不相同’);
end if;
end;
end myp12;

while循环

WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

eg1:
create or replace procedure mytest10
is
begin
declare
flag boolean;
begin
flag:=false;
while flag=false loop
dbms_output.put_line(‘进入while循环’);
flag:=true;
end loop;
end;
end mytest10;

–使用游标cursor
用for in 进行循环
游标定义:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值