首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行简单存储的pl/sql?

如何执行简单存储的pl/sql?
EN

Stack Overflow用户
提问于 2014-04-18 09:29:42
回答 2查看 99关注 0票数 0

编辑enter code here后的

这是我第一个存储的pl/sql程序。我向可能导致错误的基本元素解释:

我有一张记帐表:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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;
/

将该文件放入当前目录后,输入:

代码语言:javascript
复制
@AQ.sql

和产出:

代码语言:javascript
复制
  Procedure created.

为了执行死刑,我输入:

代码语言:javascript
复制
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 –

但是没有输出..。如何打印输出?感谢你让我知道哪里出了问题!

EN

回答 2

Stack Overflow用户

发布于 2014-04-18 12:13:19

语句上的错误是不言而喻的.因为select语句返回的结果超过一个,所以不能存储到单个变量中。您可以在您的trigger中编写一个procedure以获得输出。

致以问候。

票数 0
EN

Stack Overflow用户

发布于 2014-04-30 15:35:53

问题是,对于保存记录,有两个值作为结果集返回。Oracle变量一次只能保存一个值。如果希望它们保存多个值,则应使用1.VArray 2.嵌套表3.关联数组。

但是,撇开这些,您的问题可以通过从Ref执行select语句来解决。

打开c_cur,以便从帐户A中选择A.BSB#,其中(A.TYPE)= LOAN_TYPE;

而不是普通的select语句

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23151298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档