Oracle 子程序参数模式,IN,OUT,IN OUT
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的更多相关文章
- Oracle归档模式和非归档模式
一 什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志 ...
- Silverlight项目笔记5:Oracle归档模式引起的异常&&表格控件绑定按钮
1.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA ...
- Oracle归档模式和非归档模式的区别
一.查看oracle数据库是否为归档模式: Sql代码1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ...
- Oracle归档模式与非归档模式设置
(转自:http://www.cnblogs.com/spatial/archive/2009/08/01/1536429.html) Oracle的日志归档模式可以有效的防止instance和dis ...
- oracle并行模式
参考链接:oracle并行模式(Parallel),深入理解Oracle的并行操作(原创),oracle使用并行踩过的坑 1. 语法(这个可以加到insert.delete.update.select ...
- 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], ...
- WebServers发布提示oracle客户端模式不一致
问题:System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发BadImageFormatException.如果在安装32 位Oracle 客户端组 ...
- ORACLE归档模式和非归档模式的利与弊
转: 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式与归档模式.默认情况下,数据库采用的是非归档模式.作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建 ...
- Oracle 专用模式(DEDICATED) 和 共享模式(SHARE) (转)
Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...
随机推荐
- 新人如何运行Faster RCNN的tensorflow代码
0.目的 刚刚学习faster rcnn目标检测算法,在尝试跑通github上面Xinlei Chen的tensorflow版本的faster rcnn代码时候遇到很多问题(我真是太菜),代码地址如下 ...
- Django搭建博客网站(四)
Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...
- MySQL数据类型概念
关系型数据库的特点 1,数据以表格的形式出现 2,每行为各种记录的名称 3,每列为数据名称所对应的数据域 4许多的行和列组成一张table 5若干的表单组成databases 术语 数据库:关联表的集 ...
- java实现二叉树的前中后遍历(递归和非递归)
这里使用下图的二叉树作为例子: 首先建立树这个类: public class Node { private int data; private Node leftNode; private Node ...
- nodejs开启服务器端口
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, { ...
- CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn Mysql5.7版本更新后有很多变化,比如json等,连安装都有变化 ...
- 接口测试基础(fiddler、postman的使用、python实现测试接口程序)
写在前面:本文主要的章节规划: 1.什么是接口测试 另外,有的时候会直接调用别的公司的接口,比如银行的.淘宝的.支付宝的,此时也需要做接口测试以及验证数据: 做接口测试的好处: 其中, ...
- SDP(8):文本式数据库-MongoDB-Scala基本操作
MongoDB是一种文本式数据库.与传统的关系式数据库最大不同是MongoDB没有标准的格式要求,即没有schema,合适高效处理当今由互联网+商业产生的多元多态数据.MongoDB也是一种分布式数据 ...
- vue.js 与iview官网
vue.js https://cn.vuejs.org/v2/guide/instance.html#生命周期图示 iview https://www.iviewui.com/components/t ...
- 浅谈扩展欧几里得算法(exgcd)
在讲解扩展欧几里得之前我们先回顾下辗转相除法: \(gcd(a,b)=gcd(b,a\%b)\)当a%b==0的时候b即为所求最大公约数 好了切入正题: 简单地来说exgcd函数求解的是\(ax+by ...