繁体   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