人大金仓数据库KingbaseES 三种参数类型介绍(IN、OUT、INOUT)

关键字:

KingbaseES、IN、OUT、INOUT、人大金仓

存储过程的三种参数类型

  • 什么是参数:

参数是一种向程序单元输入和输出数据的机制,存储过程可以接收多个参数

  • 参数模式分类:

IN参数: 输入参数,只能接收参数,不能修改(可以传入一个具体的值,也可以传入一个变量)。

OUT参数:输出参数,用于输出值,会忽略传入的值,可修改并将参数值传递到当前存储过程以外的环境中(实参就只能是一个变量,不可以是具体的值)。

INOUT参数:兼容以上两种特性,能接收传入的实参值,在子程序内可修改,也可以输出(实参就只能是一个变量,不可以是具体的值)。

三种参数类型的使用示例对比说明

示例1:只有IN参数的存储过程 – 传入具体值时

CREATE OR REPLACE PROCEDURE pr1(p1 int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

RAISE NOTICE '%', a1;

END;

/

DECLARE

v1 int :=12;

BEGIN

pr1(10);

pr1(v1);

RAISE NOTICE '%',v1;

END;

/

执行结果:

示例2:只有IN参数的存储过程 – 传入变量时

CREATE OR REPLACE PROCEDURE pr1(p1 int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

RAISE NOTICE '%', a1;

END;

/

DECLARE

v1 int;

BEGIN

pr1(v1);

RAISE NOTICE '%',v1;

END;

/

执行结果:

总结:根据上面的例子可知,当我们不该参数指定类型时会默认为IN类型。

同时也验证了,IN类型的参数既可以传入值也可以传入变量。

示例3:有OUT参数的存储过程 — 传入具体值时

CREATE OR REPLACE PROCEDURE pr2(p1 OUT int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

RAISE NOTICE '%', a1;

END;

/

DECLARE

BEGIN

pr2(10);

END;

/

执行结果:

示例4:有OUT参数的存储过程 — 传入变量时

CREATE OR REPLACE PROCEDURE pr1(p1 int,p2 out int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

p2 :=a1;

END;

/

DECLARE

v1 int;

BEGIN

pr1(10,v1);

RAISE NOTICE '%',v1;

END;

/

执行结果:

总结:根据上面的例子可知,当给out类型的参数传递具体的值时,程序会报错无法调用存储过程,当给out类型的参数传的是变量时程序可以正常之执行,证明了实参就只能是一个变量,不可以是具体的值。同时,通过该out类型将存储过程内部的值输出到了外面。

示例5:有INOUT参数的存储过程 — 传入值时

CREATE OR REPLACE PROCEDURE pr2(p1 INOUT int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

RAISE NOTICE '%', a1;

END;

/

DECLARE

BEGIN

pr2(10);

END;

/

执行结果:

示例6:有INOUT参数的存储过程 — 传入参数时

CREATE OR REPLACE PROCEDURE pr1(p1 int,p2 in out int) AS

a1 int :=10;

BEGIN

a1 :=a1+p1;

p2 :=a1;

END;

/

DECLARE

v1 int;

BEGIN

pr1(10,v1);

RAISE NOTICE '%',v1;

END;

/

执行结果:

总结:根据上面的例子可知,当给inout类型的参数传递具体的值时,程序会报错无法调用存储过程,当给inout类型的参数传的是变量时程序可以正常之执行,证明了实参就只能是一个变量,不可以是具体的值。同时,通过该inout类型将存储过程内部的值输出到了外面。

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值