Oracle 如何给存储过程赋值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘;

sqlserver 存储过程中变量赋值

sqlserver 存储过程中变量赋值 declare @cc int set @cc=(select count(1) from tablename) 或 select @cc=count(1) from tablename
在下面是用的时候都没有值,例如:
if @cc = 0
这个判断失效,但是当在判断前面加select @cc的时候就可以,不知道为什么,请帮助回答一下,多谢

参考技术A 你没有把问题写多明白啊不过看你得描述,应该是在 as后面声明的局部变量。按你得用法绝对是没有问题的,我试过没问题啊。你说的“if @cc = 0这个判断失效”是什么意思呢?是表里面有记录自然@cc!=0,,“在判断前面加select @cc的时候就可以”又是什么意思?执行存储过程的话,if只是判定条件只有select才会打印出数据~~~~~~~ 参考技术B 先用select count(1) from tablename,判断是否有满足条件的记录,sql对null的判断不太友好 参考技术C 能不能给出完整代码? 参考技术D 当查询的结果没有记录时,@cc的值可能为null
需要看你具体的代码是什么
第5个回答  2011-08-10 654645

以上是关于Oracle 如何给存储过程赋值的主要内容,如果未能解决你的问题,请参考以下文章

如何给sqlserver 存储过程中的变量赋值?

大家帮忙看看Oracle存储过程怎样给变量赋值

oracle存储过程中如何对一个变量累加赋值 最好有个例子

oracle 存储过程中查询结果无法赋值到变量,请指教

存储过程给变量赋值

oracle存储过程中声明变量并赋值的问题