表格中13处缺少in或out参数_过程参数中涉及的in和out和inout

oracle 存储过程in out inout三种参数模式和PROMPT用法

文章分类:数据库

oracle 存储过程in out inout三种参数模式

oracle过程中定义了in|out|in out3中参数模式,每个参数可以选择其一

in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。

举个例子

create or replace procedure update_price(

p_product_id in NUMBER,

p_factor in NUMBER)

AS

.....

你在引用这个过程的时候给参数传入值

exexute update_price(2,2.5);

这是定义的2个参数就得到了值,in模式下值不能变

out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程

in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

简单的说in参数就是传入但存储过程里面处理的参数

out参数就是返回值的参数。

in参数就像c++语言里函数一般的参数那样

而out函数就像c++里函数的引用类型参数一样

不知道我比喻是否正确,请高手指点

create or replace procedure gettest2(stdname in varchar2,p_cursor in out types.mytype)

as

begin

open p_cursor for select * from test where name=stdname;

end;

例如上面的存储过程

stdname是in参数,传进去供查询语句使用

p_cursor是 out参数,返回查询的结果集

--------------------------------------------------------------------------------------------------------------------

oracle 存储过程 in out2009-08-11 16:30

创建过程语法:

create [or replace] procedure procedure_name

[ (argment [ { in| in out }] type,

argment [ { in | out | in out } ] type

{ is | as }

&lt类型.变量的说明&gt

( 注: 不用 declare 语句 )

Begin

&lt执行部分&gt

exception

&lt可选的异常处理说明&gt

end;

l 这里的IN表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT 表示传递参数和返回参数;

l 在存储过程内的变量类型只能指定变量类型;不能指定长度;

l 在AS或IS 后声明要用到的变量名称和变量类型及长度;

l 在AS或IS 后声明变量不要加declare 语句。

例1.

CREATE OR REPLACE PROCEDURE ModeTest (

p_InParameter IN NUMBER,

p_OutParameter OUT NUMBER,

p_InOutParameter IN OUT NUMBER) IS

v_LocalVariable NUMBER;

BEGIN

/* 分配 p_InParameter 给 v_LocalVariable. */

v_LocalVariable := p_InParameter; -- Legal

/* 分配 7 给 p_InParameter. 这是非法的,因为声明是IN */

p_InParameter := 7; -- Illegal

/* 分配 7 给 p_InParameter. 这是合法的,因为声明是OUT */

p_OutParameter := 7; -- Legal

/* 分配 p_OutParameter 给 v_LocalVariable.这是非法的,因为声明是OUT */

v_LocalVariable := p_outParameter; -- Illegal

/* 分配 p_InOutParameter 给 v_LocalVariable. 这是合法的,因为声明是IN OUT */

v_LocalVariable := p_InOu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值