Oracle存储过程_参数

本文主要介绍了Oracle存储过程的参数模式。包括in模式,为默认参数,接收参数且子程序内不可修改;out模式,用于输出值,忽略传入值,子程序内可修改,调用需用变量;in out模式,既能接收实参值,子程序内可修改,也能输出,调用也需用实参变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、in模式参数 :属于默认参数
输入模式的参数,用于接收参数,在子程序内部,不能进行修改。

--定义打印的存储过程
CREATE OR REPLACE PROCEDURE println (str varchar)
AS
BEGIN
  dbms_output.put_line(string);   --输出语句
END;
--定义测试in模式的存储过程
CREATE OR REPLACE PROCEDURE pro(a in int,b in int)--参数的个数、类型可以自定义,但是【参数不允许指定长度】
AS
BEGIN
  println(a);
  println(b);
  --b:=11; --in模式参数不能为其赋值、补充:赋值是":="  而不是单个"=",单个"="是判断是否相等意思
END;

--通过语句块调用存储过程
BEGIN
  pro(10,20);
END;

2、out模式参数
输出模式的参数,用于输出值,会忽略传入的值。在子程序内部可以对其进行修改。
输出:子程序执行完毕后,out模式参数最终的值会赋值给调用时对应的<实参变量>。
注意:out模式参数的调用,必须通过变量。

--测试out模式的存储过程
CREATE OR REPLACE PROCEDURE pro(c out int)
AS
BEGIN
  println(c);--c会忽略传入的值
  c:=30;--设定存储过程调用后的值
END;

DECLARE
var3 int :=100;--声明一个变量用于设定存储过程调用前的值
BEGIN
-- pro(100); --error,100对应过程中out模式的参数,out会输出结果给调用的实参,但是100不能作为赋值目标
println('存储过程调用前的值:'||var3);
pro(var3);--调用pro存储过程重新赋值;调用过程,如果过程形参是out模式,必须采用变量实参
println('存储过程调用后的值:'||var3);
END;
存储过程调用前的值:100
存储过程调用后的值:30

3、in out 模式参数
输入输出模式:能接收传入的实参值;在子程序内部可以修改; 可以输出(必须用实参变量调用)

--测试in out模式的存储过程
CREATE OR REPLACE PROCEDURE pro(d in out int)
AS
BEGIN
  println(d);
  d:=99;--in out模式参数的值可以修改
END;

DECLARE
age int :=40;--声明一个变量用于设定存储过程调用前的值
BEGIN
println('存储过程调用前的值:'||age);
pro(age);--调用pro存储过程重新赋值
println('存储过程调用后的值:'||age);
END;
存储过程调用前的值:40
40
存储过程调用后的值:99
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值