编辑enter code here后的
这是我第一个存储的pl/sql程序。我向可能导致错误的基本元素解释:
我有一张记帐表:
BSB# CUSTOMER# ACCOUNT# TYPE BALANCE
------ ---------- ---------- -------------------- ----------
012878 123456 12345678 Saving 1234.52
012878 123456 22345678 credit -1534.52
012878 123456 32345678 Home loan -453234.52
012878 123458 11001234 SAVING 3213.54
012878 123458 21001234 Credit -120.34我试图提示帐户类型从用户输入和显示BSB#。下面是我的pl/sql:
CREATE OR REPLACE PROCEDURE AQ (loan_type IN ACCOUNT.TYPE%TYPE) IS
BSB_NUMBER ACCOUNT.BSB#%TYPE;
BEGIN
SELECT A.BSB#
INTO BSB_NUMBER
FROM ACCOUNT A
WHERE LOWER(A.TYPE) = LOAN_TYPE;
DBMS_OUTPUT.PUT_LINE(BSB_NUMBER);
DBMS_OUTPUT.PUT_LINE('HELLO');
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Error ! There is no such account');
END AQ;
/将该文件放入当前目录后,输入:
@AQ.sql和产出:
Procedure created.为了执行死刑,我输入:
SQL>
SQL>
SQL> EXECUTE AQ('SAVING');
ERROR at line 1: ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at "BKG988.AQ", line 4 ORA-06512: at line 1 –但是没有输出..。如何打印输出?感谢你让我知道哪里出了问题!
发布于 2014-04-18 12:13:19
语句上的错误是不言而喻的.因为select语句返回的结果超过一个,所以不能存储到单个变量中。您可以在您的trigger中编写一个procedure以获得输出。
致以问候。
发布于 2014-04-30 15:35:53
问题是,对于保存记录,有两个值作为结果集返回。Oracle变量一次只能保存一个值。如果希望它们保存多个值,则应使用1.VArray 2.嵌套表3.关联数组。
但是,撇开这些,您的问题可以通过从Ref执行select语句来解决。
打开c_cur,以便从帐户A中选择A.BSB#,其中(A.TYPE)= LOAN_TYPE;
而不是普通的select语句
https://stackoverflow.com/questions/23151298
复制相似问题