ORACLE 存储写存储过程总结


step01 需要创建一个package;
例如:
create or replace package package_name is

       end package_name ;

这一步只是创建一个package。
step02: 为创建好的package创建包体
例如:
create or replace package body package_name is

      end package_name ;

step03: 开始创建存储过程,在上面的包体里面写。
create or replace package body package_name is
procdure pro_1 as
– 声明变量–
begin
–这里写过程的内容
end pro_1 ;
end package_name ;
过程中遇到的一些细节—

  1. 1 避免重复插入
    给表中插入数据时,先清除表中的内容:execute immediate ‘truncte table table_name drop storage’
    按字段_1的取值来清空: execute immediate 'truncte table table_name where 字段_1 = ’ || 给定条件 ‘drop storage’
    按照分区来清空: execute immediate ‘alter table table_name tuncate partition 分区名 drop storage’
  2. 自定义数组格式
    eg:
    type type_array is table of varchar(20) index by binary_integer;
    其中,‘type’表示声明,‘type_array’ 为自定义的数组类型名称
    ‘varchar(20)’是数组元素的类型,
    ‘index by binary_integer’表示数组内的索引
    -声明数组
    使用上面自定义的数组类型,开始声明一个数组变量
    eg:m_array type_array;
  3. 查询结果并赋值给该数组

eg:select equid bulk collect into m_array from tb_equipment;
第二个关键字段,表示把结果封装成集合赋值给数组。

4接着就可以使用for循环遍历数组了

eg:
   for i in 1..m_array.count loop

       ...
   end loop;

**参考博客:https://blog.csdn.net/weishaoqi2/article/details/81225455** 

5 变量的命名

  • 直接法
    :=
    如:v_flag := 0;
  • select into

如:假设变量名为v_flag,select count(*) into v_flag from students;

  • execute immediate 变量名(一般是sql的select语句) into 变量名
    如:v_sqlfalg := ‘select count(*) from user_tables where table_name=’‘’||v_tablename || ‘’‘’;
    execute immediate v_sqlfalg into v_flag;
    其中,v_tablename也是变量

在存储过程中,是不能直接写select语句的。

原文:https://blog.csdn.net/drbing/article/details/51821262
6 变量的声明
6-1 声明一个Number类型的变量n_num: n_num NUMBER;
6-2 声明一个和某张表中某个字段同一类型的变量
eg: tmp_ym table_namex.ym%type;
6-3 如果声明一个变量和表中的一条记录类型相同: tmp_row table_namex%rowtype;
给tmp_row 的各个字段进行赋值的方式: tmp_row.字段1 := ‘xxxxx’
如果声明一个临时变量供循环中使用,应指明该变量的类型。

7 在存储过程中调用其他过程

包名.过程名(参数)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值