【Oracle学习】之 存储过程

Q:为什么需要存储过程
A:SQL语句只能单行执行,为了实现复杂的业务操作、业务约束,需要存储过程。


oracle文档:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6009.htm

一、定义

(1)概念: 存储子程序是指被命名的PL/SQL块,以编译的形式存储在数据库服务器中,可以在应用程序中进行调用,是PL/SQL程序模块化的一种体现。
(2)PL/SQL中的存储子程序:存储过程(存储)函数两种。
(3)区别:①存储过程用于执行特定的操作,不需要返回值。②而函数则用于返回特定的数据。

二、创建存储过程

CREATE [ OR REPLACE ] PROCEDURE [ schema. ]procedure
   [ (argument [ { IN | OUT | IN OUT } ]
               [ NOCOPY ]
               datatype [ DEFAULT expr ]
       [, argument [ { IN | OUT | IN OUT } ]
                   [ NOCOPY ]
                   datatype [ DEFAULT expr ]
       ]...
     )
   ] 

   { IS | AS }

BEGIN

EXCEPTION 

END[procedure_name];

⒈参数的模式

存储过程参数模式包括IN、OUT、IN OUT 三种
(1)IN(默认参数模式):表示当存储过程被调用时,实参值被传递给形参;在存储过程内,形参起常量作用,只能读该参数,而不能修改该参数;当存储过程调用结束返回调用环境时,实参没有被改变。IN模式参数可以是常量或表达式。

这里写图片描述
这里写图片描述

(2)OUT:表示当存储过程被调用时,实参值被忽略;在存储过程内,形参起未初始化的PL/SQL变量的作用,初始值为NULL,可以进行读/写操作;当存储过程调用结束后返回调用环境时,形参被赋给实参。OUT模式参数只能是变量,不能是常量或表达式。

这里写图片描述

(3)IN OUT:表示当存储过程被调用时,实参值被传递给形参;在存储过程中,形参起已初始化的PL/SQL变量的作用,可读可写;当存储过程调用结束返回调用环境时,形参值被赋给实参。IN OUT模式参数只能是变量,不能是常量或表达式。


⒉参数的限制

在声明形参时,不能定义形参的长度或精度、刻度,他们是作为参数传递机制的一部分被传递的,是由实参决定。

三、查看存储过程

特别注意,存储过程的数字字典:desc user_source

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值