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 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...
随机推荐
- poj2479 最大子段和
题意:给定一个数列.求出数列中不相交的两个子段和,要求和最大 解题思路:对每一个i来说,求出[0-i-1]的最大子段和以及[i-n-1]的最大子段和,再加起来,求出最大的一个.[0-i-1]的最大子段 ...
- CSS核心内容之盒子模型
1.盒子模型具有的属性: 内容(content) 填充(padding) 边框(border) 边界(margin) 图示如下: 2.流概念 1.流的概念 在现实生活中已经流水,在网页设计中就是指元素 ...
- Java中常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基 ...
- 给你的jQuery项目赋予Router技能吧
现在你不会React/Vue都不好意思说自己是前端,不过我相信很多前端项目还是基于jquery类库的传统模式的,假如你有追求的态度使用过requireJs这个库,你一定思考过一个问题,或者说一种组件化 ...
- make和makefile简明基础
0.make.makefile是什么? makefile定义了一系列的规则,来规定哪些部分先编译,哪些部分后编译,写好makefile以后,只需一个make命令就可以让整个工程完全自动编译,所以简单的 ...
- SqlServer varchar数据中类似于1.1.1.1这种值的排序方法
select * from 表名order by Convert(int,left(列名,charindex('.',列名+'.')-1)) asc, 列名asc charindex('.',列名) ...
- python基础(str,list,tuple)
python是一门动态解释型的强类型定义语言(先编译后解释) 动态类型语言 动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来 解释型 程 ...
- 通过四个例子理解JavaScript拓展运算符
原文地址:JavaScript & The spread operator 拓展运算符看起来像什么? 三个点,... 它能做什么? 拓展运算符允许一个表达式在某个地方展开成为多个元素.变量或参 ...
- maven的下载安装,配置本地仓库
maven的下载安装 下载地址:http://maven.apache.org/download.cgi 下载完成后解压到某一个目录 配置环境变量 第一个环境变量 MAVEN_HOME A:\mave ...
- ECS的配置与使用
登录阿里云ECS,系统是centos7.2 在linux下通过useradd方式创建新用户,切换到该用户权限,发现-bash-4.2$ . 解决方法:先查看进程,关闭相关进程.然后使用useradd ...