Oracle存储过程

例子

存储过程:

create or replace procedure ws_test(strs in varchar2) as
str varchar2(20); 
cursor ybs is SELECT REGEXP_SUBSTR(strs,'[^,]+',1,rownum) a from dual connect by rownum<=LENGTH(strs)-LENGTH(regexp_replace(strs,',',''))+1;
begin    
     open ybs;     
     loop
       fetch ybs into str;
       exit when ybs%notfound;
       dbms_output.put_line(str);
     end loop;    
    close ybs;    
end ws_test;

打开测试窗口进行测试:
在这里插入图片描述
运行结果:
在这里插入图片描述

先学习PLSQL编程

一、PLSQL基本用法

在这里插入图片描述
在这里插入图片描述
注释:
declare       作用:定义变量、游标
begin       开始执行
end       结束执行
dbms_output.put_line(‘hello world’);      PLSQL打印语句
||       字符串的拼接符

sql>set serveroutput on       命令窗口打开打印结果开关

二、变量

共三种变量:
1、普通变量

变量名 类型(长度);

例子: name varchar2(20);
赋值(两种方法):
name varchar2(20) := ‘张三’;
select ‘张三’ into name from dual;

2、引用型变量

变量名 表.字段%TYPE;

特点:变量的类型和长度取决于表中字段的类型和长度
例子: name user.uname%TYPE;

3、记录型变量

变量名 表%rowtype;

特点接受表中的一整行记录
例子: name user%rowtype;

三、条件分支(判断)

if 条件1 then 执行1
     elsif 条件2 then 执行2
     else 执行3
end if;

四、循环(3种)

其中的loop循环:

loop
     exit when 退出循环条件
end loop;

五、游标(集合类型)

特点:用于临时存储一个查询返回的多行数据,遍历游标,逐行访问处理该结果集
使用方式:声明—打开—读取—关闭

声明:cursor 游标名[(参数列表)] is 查询sql;
            例:cursor ybs is select name from user;
打开:open 游标名[(参数)];
取值:fetch 游标名 into 变量列表;
关闭:close 游标名;

游标属性(4个):
在这里插入图片描述

存储过程(结合上边例子)

PLSQL语言只能执行一次,所以创建存储过程能够使其多次使用;
存储过程语法和PLSQL一样,大同小异;
定义变量时,declare可有可无。

语法:
create  or  replace  procedure  名称[(参数列表)]  is
begin

end  [名称];
把例子拿过来讲解:

例子目的:将一个字符串根据 “,” 分成数组,并挨个输出

--开始定义存储过程  输入参数:strs
create or replace procedure ws_test(strs in varchar2) as
--声明变量:str
str varchar2(20); 
--声明游标:ybs  后边的SQL是将strs根据 “,” 分隔开生成一列值
cursor ybs is SELECT REGEXP_SUBSTR(strs,'[^,]+',1,rownum) a from dual connect by rownum<=LENGTH(strs)-LENGTH(regexp_replace(strs,',',''))+1;
--开始执行存储过程
begin  
	 --打开游标  
     open ybs;   
     --开始loop循环  
     loop
       --将游标的值逐个赋予str
       fetch ybs into str;
       --循环退出条件:游标属性 ybs没有数据时为true
       exit when ybs%notfound;
       --输出str的值(也可以做增删改查操作)
       dbms_output.put_line(str);
     --循环结束
     end loop; 
    --关闭游标   
    close ybs;
--存储过程结束    
end ws_test;
小知识点:

1、可以直接在begin上面声明变量
2、创建存储过程时,is—as 可以互换
3、存储过程参数:
         输入参数格式:    参数名 in 数据类型
         输出参数格式:    参数名 out 数据类型
         注:多个参数时,逗号隔开

plsql调用存储过程:

测试窗口: 在begin下面直接写 存储过程名字(参数),运行
命令窗口调用: sql> exec 存储过程名字(参数);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值