存储过程篇1--初探Oracle存储过程

版权声明:原创转载请注明出处,谢谢 https://blog.csdn.net/qq_21108311/article/details/81035373

初探Oracle存储过程;

存储过程是个好东西,你可以把它理解成一个脚本,可以按照你定义存储过程的条件,在你点击执行的时候,自动触发去执行所要的计算从而得出结果,非常适合需要定时或者定条件做一个相同重复的sql计算。常规的bi报表之类的,库存计算之类的等等等等,功能及其强大。

 

存储过程基本形式:

 

Createor replace procedure A(b  int) as

Begin

Insert/delect/update/select….from;

End;

翻译:

创建或者替换掉存储过程 A(定义一个A参数命名为b 参数类型为int) as后面可以不加变量;

执行区域写入 begin+判断或执行条件 end跳出执行;

这里我们就创建了一个基本的存储过程,这里的create 和 procedure  A  as begin end;是必要的,不可缺少的,我们在创建的时候建议大家一定要加上OR replace,这是代表,如有没有存储过程A,我就创建一个A,如果系统中有了一个存储过程A,我就替换掉它,为什么要替换掉,因为存储过程不允许出现相同名称。所以我们避免创建不成功,一定要家replace。

 

这里我举个列子,我要创建一个测试表的存储过程t_temp:

t_temp表只有四个字段:ext1 varchar,ext2 varchar,ext3varchar,ext4 date

 

我要给表加上内容为 1 1 1,2 2 2;

新建:

createor replace procedure proc_temp_test(a varchar,b varchar,c varchar)

as

begin

  insert into t_temp values(a,b,c,null);

End;

我们存储过程就建好了;

那么怎么执行呢,存储过程建好后运行一次就会保存到数据库的procedures文件夹中:

 

保存好后,我之后要给temp表插入数据,就不用写insert语句了,可以这么写:

Begin:

Procedure proc_temp_test(1,1,1);

End;

这句话代表我要给表插入1 1 1 null 的数据;

执行后,我们select表:

 

 

大家可能有疑问说我插入一条数据,为什么要这么麻烦。对,说得不错,但是如果我要重一张表插入10000条数据到另一张新表,那我我们这里的A B C改成老表的字段,是不是就可以直接begin执行下就可以自己跑了?完全不需要自己手动inert 造10000条数据。

 

 

上面的方法可以用存储过程来insert update select delete等方法,接下来聊聊用存储过程计算:

 

就用上面的数据,我们再插入一条:

Begin:

Procedure proc_temp_test(3,3,3);

End;

这里已经知道接下来查询这张表的结果了对吧:

 

那我们首先来求下有多少行,即count一下数据,在这里引入一个重要的概念,变量,上面的存储过程我们引入一个概念叫参数,参数可以看成一个固定值的数据,我给啥数据,参数等于啥。变量和参数区别在,我数据是变化的,不固定。这个概念可以百度学习下。

 

我们之前聊到参数是要加在as后面,写法如下:

createor replace procedure proc_temp_test

as

v_numnumber;

--这里我定义了一个参数名叫v_num,类型为number类型。

begin

 select count(ext1) into v_num from t_temp;--查询条件

 dbms_output.put_line(v_num);--输出值

  end;

这里我们先不看输出值这条sql,这是输出查询条件的结果的,固定死的一条语句;我们定义了一个变量,之后我执行中查出count值赋给了变量,赋值方式是into,这个一定要写,值给了变量后,输出变量。

 

那么我们来执行下这个存储过程:

  begin

    proc_temp_test;

    end;

   

 

执行完后显示已完成执行,但是没有像sql查询一样给出结果,其实结果是给了的,这是计算输出显示后结果在输出栏,我们切换到输出栏查看结果如下:

 

 

这就是计算,同理,我存储过程中count改为sum在提交后运行一次,结果就变成求和结果:

 

 

 

参数的使用有点概念理解了吧,这次就先学习到这里,循环等等内容我们后续再进行分享。

 

阅读更多
换一批

没有更多推荐了,返回首页