[英]PL/SQL Return ROWTYPE from Function
我正在嘗試編寫一個返回 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;
非其中將編譯。
要僅返回查詢返回的第一條記錄,請執行以下操作:
...
begin
for rec in (select *
from t_person_attribute
where id = p_id
order by effective_date desc) loop
return rec; -- just return the first one we find
end loop;
end;
您正在嘗試使用select...into...
查詢返回多個記錄(盡管order by
)。 這在 PL/SQL 中不起作用。 那,並且您正在嘗試 Oracle 方言中不存在的各種 SQL 關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.