IN :用于传入参数。
在调用过程的时候,实参传到该过程中。
在过程内部,形参只读且不能更改。
在过程执行完毕,返回调用环境时候,实参到的值也不会改变
--带IN参数的过程,赋值。
create or replace proceduce ModeIn(
p_InParameter in number
)as v_LocalVariable number:=0;
begin
DBMS_OUTPUT.PUT('Inside ModeIn:');
if(p_InParameter is null)then --in 传入参数,实参传到该过程中。
DBMS_OUTPUT.PUT_LINE('p_InParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_InParameter='||p_InParameter);
end if; v_LocalVariable:=p_InParameter; --和法赋值,只读
-- p_InParameter:=v_LocalVariable; --不能赋值,形参只读且不能更改 DBMS_OUTPUT.PUT('At end of ModeIn:');
if(p_InParameter is null) then
DBMS_OUTPUT.PUT_LINE('p_InParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_InParameter='||p_InParameter);
end if;
end ModeIn; ----调用ModeIn过程,观察IN参数的使用
declare
v_in number :=1;
begin
DBMS_OUTPUT.PUT_LINE('Before calling ModeIn, v_in='||v_in);
ModeIn(v_in);
DBMS_OUTPUT.PUT_LINE('After calling ModeIn, v_in='||v_in);
end;
/ Before calling ModeIn, v_in=1 --实参初始值为1
Inside ModeIn:p_InParameter=1 --形参接收传入的实参值为1
At end of ModeIn:p_InParameter=1 --形参只读且不能更改,形参值为1
After calling ModeIn, v_in=1 --返回调用环境时候,实参到的值也不会改变,实参值为1
OUT参数:用于返回值。
在调用过程时候,会忽略传入的形参的值,形参像未初始化的变量,值为null。
形参可以读取和写入。
在过程执行之后,返回调用环境(只有程序正常结束时),会将形参赋值给实参。
--带OUT参数的过程,赋值。
create or replace procedure ModeOut(
p_OutParameter out number;
)as v_LocalVariable:=0;
begin
DBMS_OUTPUT.PUT('Inside ModeOut:');
if(p_OutParameter is null)then -- 在调用过程时候,会忽略传入的形参的值,形参像未初始化的变量,值为null。
DBMS_OUTPUT.PUT_LINE('p_OutParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_OutParameter='||p_OutParameter);
end if; v_LocalVariable:=p_OutParameter; --和法赋值,形参可读
p_OutParameter:=7; --形参可以读取和写入 DBMS_OUTPUT.PUT('At end of ModeOut:');
if(p_OutParameter is null) then
DBMS_OUTPUT.PUT_LINE('p_OutParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_OutParameter='||p_OutParameter);
end if; ----调用ModeOut过程,观察Out参数的使用
declare
v_out number :=1;
begin
DBMS_OUTPUT.PUT_LINE('Before calling ModeOut, v_out='||v_out);
ModeIn(v_out);
DBMS_OUTPUT.PUT_LINE('After calling ModeOut, v_out='||v_out);
end;
/ Before calling Modeout, v_out=1 --实参初始值为1
Inside ModeOut:p_OutParameter is null --在调用过程时候,会忽略传入的形参的值,形参像未初始化的变量,值为null。
At end of ModeOut:p_OutParameter=7 --形参可以读取和写入,值为改变后的7
After calling ModeOut, v_out=7 -- 返回调用环境时候,返回调用环境(只有程序正常结束时),会将形参赋值给实参。
IN OUT参数: 用于传入参数和返回值
在调用过程的时候,实参值会传递到过程中。
在过程执行之后,返回调用环境(只有程序正常结束时),会将形参复制给实参。
create or replace procedure ModeInOut(
p_InOutParameter in out number;
)as v_LocalVariable:=0;
begin
DBMS_OUTPUT.PUT('Inside ModeInOut:');
if(p_InOutParameter is null)then -- 在调用过程的时候,实参值会传递到过程中
DBMS_OUTPUT.PUT_LINE('p_InOutParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_InOutParameter='||p_InOutParameter);
end if; v_LocalVariable:=p_InOutParameter; --和法赋值,形参可读
p_InOutParameter:=8; --形参可以读取和写入 DBMS_OUTPUT.PUT('At end of ModeInOut:');
if(p_InOutParameter is null) then
DBMS_OUTPUT.PUT_LINE('p_InOutParameter is null');
else
DBMS_OUTPUT.PUT_LINE('p_InOutParameter='||p_InOutParameter);
end if; ----调用ModeInOut过程,观察In Out参数的使用
declare
v_InOut number :=1;
begin
DBMS_OUTPUT.PUT_LINE('Before calling ModeInOut, v_InOut='||v_InOut);
ModeIn(v_InOut);
DBMS_OUTPUT.PUT_LINE('After calling ModeInOut, v_InOut='||v_InOut);
end;
/ Before calling ModeInout, v_InOut=1 --实参初始值为1
Inside ModeInOut:p_InOutParameter=1 -- 在调用过程的时候,实参值会传递到过程中,形参被赋值为1
At end of ModeInOut:p_InOutParameter=8 --形参可以读取和写入,值为改变后的8
After calling ModeInOut, v_InOut=8 -- 返回调用环境时候,返回调用环境(只有程序正常结束时),会将形参赋值给实参。

Oracle 子程序参数模式,IN,OUT,IN OUT的更多相关文章

  1. Oracle归档模式和非归档模式

    一 什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志 ...

  2. Silverlight项目笔记5:Oracle归档模式引起的异常&&表格控件绑定按钮

    1.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA ...

  3. Oracle归档模式和非归档模式的区别

    一.查看oracle数据库是否为归档模式: Sql代码1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ...

  4. Oracle归档模式与非归档模式设置

    (转自:http://www.cnblogs.com/spatial/archive/2009/08/01/1536429.html) Oracle的日志归档模式可以有效的防止instance和dis ...

  5. oracle并行模式

    参考链接:oracle并行模式(Parallel),深入理解Oracle的并行操作(原创),oracle使用并行踩过的坑 1. 语法(这个可以加到insert.delete.update.select ...

  6. 07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], [0], [9710724], [0], [9711142], [], [], [], [], [], [], []

    07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], ...

  7. WebServers发布提示oracle客户端模式不一致

    问题:System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发BadImageFormatException.如果在安装32 位Oracle 客户端组 ...

  8. ORACLE归档模式和非归档模式的利与弊

    转: 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式与归档模式.默认情况下,数据库采用的是非归档模式.作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建 ...

  9. Oracle 专用模式(DEDICATED) 和 共享模式(SHARE) (转)

    Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...

随机推荐

  1. 新人如何运行Faster RCNN的tensorflow代码

    0.目的 刚刚学习faster rcnn目标检测算法,在尝试跑通github上面Xinlei Chen的tensorflow版本的faster rcnn代码时候遇到很多问题(我真是太菜),代码地址如下 ...

  2. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

  3. MySQL数据类型概念

    关系型数据库的特点 1,数据以表格的形式出现 2,每行为各种记录的名称 3,每列为数据名称所对应的数据域 4许多的行和列组成一张table 5若干的表单组成databases 术语 数据库:关联表的集 ...

  4. java实现二叉树的前中后遍历(递归和非递归)

    这里使用下图的二叉树作为例子: 首先建立树这个类: public class Node { private int data; private Node leftNode; private Node ...

  5. nodejs开启服务器端口

    var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, { ...

  6. CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn Mysql5.7版本更新后有很多变化,比如json等,连安装都有变化 ...

  7. 接口测试基础(fiddler、postman的使用、python实现测试接口程序)

    写在前面:本文主要的章节规划: 1.什么是接口测试    另外,有的时候会直接调用别的公司的接口,比如银行的.淘宝的.支付宝的,此时也需要做接口测试以及验证数据: 做接口测试的好处:      其中, ...

  8. SDP(8):文本式数据库-MongoDB-Scala基本操作

    MongoDB是一种文本式数据库.与传统的关系式数据库最大不同是MongoDB没有标准的格式要求,即没有schema,合适高效处理当今由互联网+商业产生的多元多态数据.MongoDB也是一种分布式数据 ...

  9. vue.js 与iview官网

    vue.js https://cn.vuejs.org/v2/guide/instance.html#生命周期图示 iview https://www.iviewui.com/components/t ...

  10. 浅谈扩展欧几里得算法(exgcd)

    在讲解扩展欧几里得之前我们先回顾下辗转相除法: \(gcd(a,b)=gcd(b,a\%b)\)当a%b==0的时候b即为所求最大公约数 好了切入正题: 简单地来说exgcd函数求解的是\(ax+by ...