簡體   English   中英

具有多列記錄的 PL/SQL 成員

[英]PL/SQL Member of with multicolumn record

如何將member of與多列集合一起使用?

試過這個:

declare
   TYPE t_ref_by_email_rec IS RECORD (
           email varchar(100)
         , ref   number
   );
   TYPE t_ref_by_email IS TABLE OF t_ref_by_email_rec INDEX BY BINARY_INTEGER;
   v_ref_by_email t_ref_by_email := t_ref_by_email();
begin
   if 'email@domain.com' member of v_ref_by_email.email then
      -- Do something
   end if;
end;

  • MEMBER OF運算符僅對集合數據類型有效。
  • TYPE identifier IS TABLE OF type1 INDEX BY type2不是一個集合; 它是一個關聯數組。
  • TYPE identifier IS TABLE OF type1是您定義集合的方式。

但是,即使那樣,您也不能在集合的部分屬性上使用MEMBER OF 您需要使用它來匹配整個集合元素(並且它似乎不適用於記錄)。

相反,您可以使用循環:

DECLARE
   TYPE t_ref_by_email_rec IS RECORD (
           email varchar(100)
         , ref   number
   );
   TYPE t_ref_by_email IS TABLE OF t_ref_by_email_rec;
   v_ref_by_email t_ref_by_email := t_ref_by_email(
     t_ref_by_email_rec( 'a@b', 1 ),
     t_ref_by_email_rec( 'c@d', 2 ),
     t_ref_by_email_rec( 'e@f', 3 ),
     t_ref_by_email_rec( 'g@h', 4 )
   );
BEGIN
  FOR i IN 1 .. v_ref_by_email.COUNT LOOP
    IF 'e@f' <> v_ref_by_email(i).email THEN
      CONTINUE;
    END IF;
    DBMS_OUTPUT.PUT_LINE( 'Found' );
  END LOOP;
END;
/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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