1、关于SQL*Plus输出的问题
为了能够是用DBMS_OUTPUT程序包中的PUT_LINE过程进行输出,需要先使用如下命令: SQL> SET SERVEROUTPUT ON
2、错误提示:
ORA-01422: 返回的行数超过请求的行数
ORA-06512: 在"SYSTEM.TRANSFER", line 5
下面是PL/SQL代码,是一个转账的存储过程。
SQL> drop procedure Transfer; SQL> get C:/trasfer.txt 1 create procedure Transfer(cID char,bID char,amount number) 2 as 3 total number; 4 begin 5 select Cmoney into total from credit where CID=cID; 6 IF total IS NULL THEN 7 DBMS_OUTPUT.PUT_LINE('该账户不存在或账户中没有存款'); 8 ROLLBACK; 9 RETURN; 10 END IF; 11 IF total<amount THEN 12 DBMS_OUTPUT.PUT_LINE('该账户存款不足'); 13 ROLLBACK; 14 RETURN; 15 END IF; 16 NULL; 17 UPDATE credit set CMONEY=CMONEY-amount where CID=cID; 18 UPDATE bankcheck set BMONEY=BMONEY+amount where CIN=bID; 19 --INSERT INTO LOGTABLE(IN_ID,OUT_ID,MONEY) VALUES(cID,bID,amount); 20 COMMIT; 21 EXCEPTION 22 WHEN NO_DATA_FOUND THEN 23 DBMS_OUTPUT.PUT_LINE('该账户不存在'); 24* END; SQL> / SQL> call Transfer(1,3,100);
错误原因可能是:
第5行中的
select Cmoney into total from credit where CID=cID;可能和系统变量名重复。
然后改为 CID=creditID 后错误消失。