簡體   English   中英

PL/SQL 從函數返回 ROWTYPE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM