我将在 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;
/
当我选择客户然后打开测试列表时显示错误,它显示此错误:
请问我该如何解决这个错误,提前谢谢您。
嗯...你应该调试你的 apex 页面来找出到底发生了什么。下面的截图是我写的一个小测试,用来模拟你的错误。
步骤 1:启用调试:
打开该记录并查找错误。这将向您显示哪个语句出错。
从你的错误来看,查询
返回多行。A
SELECT INTO
从单行文档中检索一个或多个列。如果 select 返回多行,它将引发错误 1422 的异常。如果您知道这一点,并且只想要第一行,那么您可以添加FETCH FIRST 1 ROWS ONLY
否则... 可能是一个错误,查询需要修复。祝你好运!
我按照如下方式解决了它:
在测试列中我替换了 SQL 查询并使用了以下查询:
然后在级联值列表中
父项:P58_CUSTOMER
并且需要父项,然后它才能工作