【存储过程】存储过程中所有定义的参数都要赋值么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【存储过程】存储过程中所有定义的参数都要赋值么?相关的知识,希望对你有一定的参考价值。

存储过程中所有定义的参数都要赋值么?
打个比方,比如我前面没有向存储过程中传递参数@a

但在存储过程中定义了一个@a

这个@a在存储过程中没用到,必须赋值么?
谢谢一楼的朋友,那我再问一个问题

参数可以一起赋值么?写在一行上

比如:set @game='',@area='',@server='',@goodskind='',@keyword='',@type=''

1,存储过程必须赋值 不论用没用但是赋值可以在创建过程时赋值,也可以在执行时赋值如;exec 存储过程名 声明的变量次序(这是输入型参数)
2,你这样赋值有问题,set只能复制一个值,如果给多个变量赋值得话就使用“select”
希望这些能给你一些帮助。
参考技术A
只要定义了变量都必须给值
除非你定义的时候就给了默认值
或者是定义的输出参数
输出参数是不用给值的
但是
要给变量

Oracle 如何给存储过程赋值

我现在定义了一个存储过程,有一个参数,是varchar(20)类型的,我在调用的时候,能不能这样给它赋值:issuccess('123456789');

如果存储过程的名字是issuccess
可以这样定义入参 issuccess(PRM_I in varchar2).
调用的时候就可以:
issuccess('123456789');
作为传入的值来处理。
如果需要把存储过程中处理的结果返回出来,那么可以定以OUT 参数:
issuccess(PRM_I in varchar2,PRM_O OUT VARCHAR).
调用之前准备一个变量
VS_OUT varchar2(20);
调用时:
issuccess('123456789',VS_OUT).
过程里面修改PRM_O的值,过程执行完成后可以通过VS_OUT捕获。
参考技术A 应该是定义一个函数,存储过程是不需要输入输出的,函数可以带输入,必须输输出。
CREATE OR REPLACE FUNCTION issuccess (In_char IN VARCHAR2)
RETURN VARCHAR2
IS
tmpVar NUMBER;
BEGIN
tmpVar :=0;
.......................
RETURN TO_CHAR(tmpVar);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END issuccess ;
/
中间过程自己填。
可以赋值使用:V_SCC :=issuccess('123456789');
也可以:select issuccess('123456789') from dual;本回答被提问者采纳
参考技术B 赋值最简单:issuccess = ‘123456789‘;

以上是关于【存储过程】存储过程中所有定义的参数都要赋值么?的主要内容,如果未能解决你的问题,请参考以下文章

存储过程给变量赋值

Oracle 如何给存储过程赋值

mysql存储过程中怎么在循环中取变量值???

Oracle数据库存储过程中输出参数为自定义游标类型时,使用call或者exec调用时,用啥来给游标赋值

oracle 存储过程赋值的方法

oracle存储过程输入参数能否为空