Oracle存储过程(小白理解)

1.简单的存储过程(无参数)

create or replace procedure p_aa
as
begin
  dbms_output.put_line('aaa');
end;

create or replace procedure :这一串都是关键字

p_aa  :  存储过程的名称

as:关键字。
begin:关键字。
dbms_output.put_line(‘aaa’); 输出内容,dbms_output.put_line()  Oracle控制台输出方式。
end;关键字。

1.1无参存储过程调用,(3种方式,建议写好declare)

###########  使用declare调用

declare
begin
  p_aa;
end;

############  也可直接使用begin配合end调用

begin
  p_aa; --在此处也可使用myDemo01();完成存储过程的调用
end;

############  使用call调用

call p_aa();--call 存储过程名可完成调用,注意括号不能少

2.带有参数的存储过程(OUT[输出],IN[输入])

CREATE OR REPLACE PROCEDURE 
"PROC_DEMO1"(name1 OUT VARCHAR,age IN NUMBER) AS --使用OUT/IN来决定参数使用方式
BEGIN
dbms_output.put_line('age='||age);  --  || 表示分割字符串,等于做字符串拼接
SELECT '涨工资' INTO name1 FROM dual;  
END;

name1 OUT VARCHAR:定义参数name1为OUT输出使用Oracle  VARCHAR 类型

age IN NUMBER :定义参数age为IN输入使用Oracle NUMBER类型

INTO:表示把 SELECT 后的字符串赋入给 name1

dual:Oracle中的dual表是一个单行单列的虚拟表。

2.1带参存储过程的调用

DECLARE
name VARCHAR(10);--对应 name1 的同类型接收参数
BEGIN
PROC_DEMO1(name,23); --把定义好类型的name传入去接收name1
dbms_output.put_line('name='||name);
END;

3.while循环的存储过程

create or replace procedure p_aa
as
  n_count number := 0; --无论创建还是调用,变量都建与AS关键字后
begin
  while n_count < 5 loop
    dbms_output.put_line(n_count);
    n_count := n_count + 1;
  end loop;
end;

 n_count number := 0;  给n_count 赋值,存储过程参数赋值写法就是  :=

loop,end loop: 标明循环代码块

3.1while循环的调用

CALL p_aa();

4.for循环

CREATE OR REPLACE PROCEDURE 
"PROC_DEMO1" 
AS
str VARCHAR(10):='i=';
BEGIN
	FOR ab IN 0..9 LOOP
		dbms_output.put_line(str||ab);
END LOOP;
END;

FOR ab:ab 定义的变量,实替每次循环的对象结果

IN 0..9:定义循环范围,也可放入如:  select * from student 等结果集进行筛选判断等

举例如下:

create or replace procedure p_aa
as
begin
 FOR ab in (select * from student) loop
     if (ab.id<3) then
        dbms_output.put_line(ab.stuName);
      end if;
  end loop;
end;

ab.id<3:这里ab就代表每次循环出的student表每行数据,可以根据其某些数据做筛选判断都可以的

if(条件) then 内容 end if;就是if判断

4.1 for循环调用

########### 第一种as后定义了变量的调用

DECLARE
BEGIN
PROC_DEMO1();
END;

########### 第二种对某查询结果集做了处理的调用
CALL p_aa();

结尾:

虽然存储过程创建时就预编译sql,但是请合理使用,不是所有场景都适合

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值