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:
有没有热心大神给解决下,感激不尽
执行存储过程 exec proc