为什么我收到错误 Ajax 调用返回服务器错误 ORA-01422:精确获取返回的行数超过 ajax_dispatch_request 请求的行数。?

问题描述 投票:0回答:1

我将在oracle APEX中做实验室订单页面,我有2列

客户和测试属于选定的客户

首先我将选择客户,然后我想显示该客户的测试列表

我为测试列表列做了以下代码:

选择列表的 SQL 查询:

Select GET_CUSTOMERS_TEST(CUST_NO) TEST_NAME,CUST_NO
From CUSTOMERS_PRICE_LIST
WHERE CUST_NO = :P58_CUSTOMER;

然后我创建了以下函数并从查询 GET_CUSTOMERS_TEST(CUST_NO) 中调用它

create or replace function GET_CUSTOMERS_TEST(P_CUST_NO NUMBER)
RETURN VARCHAR2
IS 
    V_NAME VARCHAR2(255);
BEGIN
    IF P_CUST_NO IS NOT NULL THEN
        SELECT B.TEST_NAME_ENG INTO V_NAME
         FROM CUSTOMERS_PRICE_LIST A, LAB_TESTS B
         WHERE A.CUST_NO = P_CUST_NO
         AND A.TEST_NO = B.TEST_NO;
        RETURN V_NAME;
            
    ELSE
        return null;
    END IF;   
    EXCEPTION 
            WHEN NO_DATA_FOUND THEN
            NULL;     
END;
/

当我选择客户然后打开测试列表时显示错误,它显示此错误:

enter image description here

我该如何解决这个错误,提前谢谢你。

oracle-database plsql oracle-apex
1个回答
0
投票

嗯...您应该调试您的 apex 页面以了解到底发生了什么。下面的屏幕截图来自我为模拟您的错误而编写的一个小测试。

第 1 步:启用调试:

enter image description here

  • 单击“调试”>“启用调试”>“信息”
  • 这将重新加载页面
  • 执行引发错误的操作
  • 单击“调试”>“查看调试”。这将打开一个新窗口,其中包含显示各个请求及其调试的报告。查找引发错误的请求(它是 AJAX 请求,因此将出现在路径信息中)

enter image description here

打开该记录并查找错误。这将告诉你哪个语句出错了。

从你的错误看来,查询

        SELECT B.TEST_NAME_ENG INTO V_NAME
         FROM CUSTOMERS_PRICE_LIST A, LAB_TESTS B
         WHERE A.CUST_NO = P_CUST_NO
         AND A.TEST_NO = B.TEST_NO;

返回多于一行。

SELECT INTO
从单行 docs 中检索一列或多列。如果 select 返回多于一行,则会引发错误 1422 的异常。如果您知道这一点并且只想要第一行,那么您可以添加
FETCH FIRST 1 ROWS ONLY

... 
         WHERE A.CUST_NO = P_CUST_NO
         AND A.TEST_NO = B.TEST_NO
         FETCH FIRST 1 ROWS ONLY;

否则...可能是一个错误并且需要修复查询。祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.