-1
我想寫一個返回ROWTYPE的函數,但它應該只返回一條記錄。PL/SQL從函數返回ROWTYPE
這裏是我的功能:
FUNCTION f_get_lastest_by_id (p_id IN T_PERSON_ATTRIBUTE.ID%TYPE)
RETURN T_PERSON_ATTRIBUTE%ROWTYPE
IS
out_rec T_PERSON_ATTRIBUTE%ROWTYPE;
BEGIN
SELECT *
INTO out_rec
FROM T_PERSON_ATTRIBUTE
WHERE ID = p_id
ORDER BY EFFECTIVE_DATE DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
RETURN out_rec;
END;
我也試過
FUNCTION f_get_lastest_by_id (p_id IN T_PERSON_ATTRIBUTE.ID%TYPE)
RETURN T_PERSON_ATTRIBUTE%ROWTYPE
IS
out_rec T_PERSON_ATTRIBUTE%ROWTYPE;
BEGIN
SELECT *
INTO out_rec
FROM T_PERSON_ATTRIBUTE
WHERE ID = p_id
ORDER BY EFFECTIVE_DATE DESC
LIMIT 1;
RETURN out_rec;
END;
其中非將編譯。
PL \ SQL中沒有'limit'子句,只是刪除它 –
但該查詢可以返回多行,主鍵是複合鍵,Oracle是否忽略其餘記錄? – greyfox
您正在通過ID進行選擇,但不能在此處顯示多行。在多行的情況下會發生'TOO_MANY_ROWS'異常,如果沒有行,我們將得到'NO_DATA_FOUND'異常 –