我用下面的方式执行oracle包中的存储过程,存储过程是有错误的但它并不报错,这是问什么?

DECLARE
VAR1 VARCHAR2(20);
VAR2 VARCHAR2(20);
BEGIN
REWARD_BJCU_INTER.DEAL_REWARD_USER('201304',VAR1,VAR2);
END;
/
在plsql用测试去跑存储过程可以报错,用命令就不报错,还显示successfully(存储过程中是表名被使用的错误)。
我现在有要求必须用命令在后台跑,可它根本不报错,高手教教我怎么办吧?

第1个回答  2013-04-11
存储过程设置返回值,调用完成后检查返回值参数是否符合要求,例如:
修改一下存储过程REWARD_BJCU_INTER.DEAL_REWARD_USER的参数 VAR2是IN OUT的变量(或者增加一个变量也行),存储过程中如果报错了,那么就修改这个值为0,如果成功就就是1,那么调用完成后,检查一下VAR2值就可以了,代码我不写可以么。
这个问题的原因是例外的影响/捕获范围问题。
第2个回答  2013-04-15
procedure DEAL_REWARD_USER(
p_1 in Varchar2,
p_2 in varchar2,
p_3 in varchar2
x_1 out varchar2) Is

BEGIN
<你的程序>
x_1 := 'Y';--表示执行成功

EXCEPTION
WHEN OTHERS THEN
x_1 := 'N';--表示执行失败

--此处也可以直接raise exception;程序就会终止了
END;

这样在你用命令在后台跑的时候就可以得到x_1,通过判断x_1的值,就知道程序的运行情况。

如果还有不明白,可以继续追问。

Oracle 存储过程 如何实现插入数据时出错后,但还继续执行
begin insert …… ;--可能出错的地方 exception when others then null;--出错后跳到这里来。end;将可能出错语句包裹起来,抓异常,不影响往下执行。

执行oracle存储过程,总是出现Warning: Procedure created with compil...
insert下面应该有个commit;(分号也带着)而且你的insert语句后面也没有分号,所以显示命令未结束

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,
1、新建一个存储过程(Procedure)。2、修改存储过程,这个存储过程有一个输入参数(pid)跟一个输出参数(name),即通过用户id查询用户名称并将名称返回。3、调试存储过程,找到刚刚创建的存储过程右击并点击【test】选项。4、在打开的窗口内修改id值并点击左上角的倒三角形图标开始调试。5、按【CTRL+N】...

oracle 存储过程,请问这样的一个存储过程执行中其中一条语句报错,接下...
不会,直接抛出异常,并终止。存储过程是预编译sql的,主题出错会导致整个存储过程执行失败。

Oracle执行\/调用存储过程
使用EXECUTE命令进行执行相对简单,只需在命令后面输入存储过程名称即可。让我们通过一个示例进行说明。实例:执行pro_insertDetp存储过程 首先,创建一个存储过程,用于向dept表中插入一条记录,代码如下:执行此命令:EXECUTE pro_insertDept;可以在PL\/SQL程序块中调用存储过程。例如,使用以下步骤:设置服务...

oracle数据库导出用户时,表数据没有乱码,但是包,存储过程,函数等存在乱 ...
你好,以下只是本人的猜测.1.创建数据或是包的工具不一样,他们的编码也会不太一样的.以前用SqlDBX望库里面添加过数据,在SqlDBX中查询,修改删除都没有任何问题.同时在pl\/sql中查询时没有问题的,但是做导出,修改的时候会有编码的问题产生.2.就是导出用户的工具问题 ...

oracle 中 package包下面的存储过程怎么执行?新手 需详解
call 包名.存储过程名(输入的参数);例如:调用sp_package包的update_sal过程。call sp_package.update_sal('SMITH', 1000);

为什么Oracle存储过程建成功了,执行存储过程却报错
你的存储过程应该是编译报错,虽然创建了但是编译有错误。改了下你的程序:create or replace procedure edpsc2exe7(V_col in number,V_play out varchar2)IS begin case V_col when 1 then V_play := 'a';when 2 then V_play := 'b';else V_play := 'c';end case;dbms_output....

oracle 中用什么命令执行一个带参数的存储过程
1、第一步,创建一个新的存储过程,见下图,转到下面的步骤。2、第二步,完成上述步骤后,修改存储过程。 此存储过程具有一个输入参数(pid)和一个输出参数,即通过用户id查询用户名并返回名称,见下图,转到下面的步骤。3、第三步,完成上述步骤后,调试存储过程,找到新创建的存储过程,右键单击[...

Oracle数据库job,调用存储过程,PLSQL工具执行后,没有报错,但是也没有任...
SQL> create or replace procedure test_jobproce as 2 3 begin 4 5 insert into test_job values(sysdate);6 7 end test_jobproce;8 9 \/ 警告: 创建的过程带有编译错误。SQL> show errors;PROCEDURE TEST_JOBPROCE 出现错误:LINE\/COL ERROR --- --- 5\/1 PL\/SQL: SQL Statem...

相似回答