我的PL / SQL中有这个proc。 当我在sql dev中运行它时,它只给我一行(一列)
PROCEDURE Newpo_code(sp_code OUT VARCHAR2)
IS
BEGIN
SELECT To_char(Max(num))
INTO sp_code
FROM (SELECT "ordernumber" num
FROM "purchaseorder"
WHERE ROWNUM = 1
ORDER BY "pkpurchaseorderid" DESC)
WHERE ROWNUM = 1;
SELECT Substr(sp_code, 10, 2)
INTO sp_code
FROM "purchaseorder";
END newpo_code;
但是当我从代码级别运行它时
它给了我异常
ORA-01422: exact fetch returns more than requested number of rows
我在这里缺少什么?
我搜索了这个例外,但没有找到有用的结果。
答案 0 :(得分:0)
没有太多事情可以继续,但很可能这就是失败的路线:
select substr(SP_CODE,10,2) into SP_CODE from "PurchaseOrder";
为什么呢?因为PurchaseOrder
表中可能有多行,您尝试将哪个字段放在一个变量SP_CODE
中。
您可能需要where
上的PurchaseOrder
条款。
答案 1 :(得分:0)
PROCEDURE Newpo_code(sp_code OUT VARCHAR2)
IS
BEGIN
SELECT To_char(Max(num))
INTO sp_code
FROM (SELECT "ordernumber" num
FROM "purchaseorder"
WHERE ROWNUM = 1
ORDER BY "pkpurchaseorderid" DESC)
WHERE ROWNUM = 1;
SELECT Substr(sp_code, 10, 2)
INTO sp_code
FROM dual;
END newpo_code;
完成! 不管怎么说,多谢拉。