Oracle中编写存储过程,做了个小功能,但是编译通过会有警告,然后执行报错,这是为什么???

--转账系统

create table CardTable

(

CardID varchar2(20 byte),--账户卡号

C_Money number(12,2)--账户存款

)

--创建转账存储过程

create or REPLACE procedure sp_pro5(

MyCard varchar2,--我的卡号

YouCard varchar2,--你的卡号

TfMoney number,--转账的钱数

Pstate out varchar2--转账状态

) as

myMoney number(12,2);--记录我的余额

youMoney number(12,2);--记录你的余额

begin

begin

--查询我的余额。操作完成后记录

select C_Money into myMoney from cardtable where CardID = MyCard;

--已记录我的余额,判断余额是否足够转账数目

if(TfMoney <= myMoney) then

--做修改操作

update CardTable set C_Money = myMoney - TfMoney where CardID = MyCard;

update CardTable set C_Money = C_Money + TfMoney where CardID = YouCard;

Pstate :='转账成功!';

else

Pstate := '账户余额不足!';

end if;

--无异常,正常提交

commit;

--执行异常

exception

when no_data_found then

Pstate := '转账失败!'l

rollback;

end;

end sp_pro5;

--执行存储过程

DECLARE

Pstate varchar2(100) := '';

begin

sp_pro5('6217000010032394856','6217000010032394971',200000,Pstate);

dbms_output.put_line(Pstate);

end;

错误如下::

在行 3 上开始执行命令时出错:

DECLARE

Pstate varchar2(100) := '';

begin

sp_pro5('6217000010032394856','6217000010032394971',200,Pstate);

dbms_output.put_line(Pstate);

end;

错误报告:

ORA-06550: 第 4 行, 第 3 列:

PLS-00905: 对象 SCOTT.SP_PRO5 无效

ORA-06550: 第 4 行, 第 3 列:

PL/SQL: Statement ignored

06550. 00000 -  "line %s, column %s:\n%s"

*Cause:    Usually a PL/SQL compilation error.

*Action:

有没有热心大神给解决下,感激不尽

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐