这里写自定义目录标题
背景
在做POC项目时,遇到客户的代码中有member of的判断,而MogDB暂不支持该语法,不过MogDB中可以采用其它方式来实现该功能。
Oracle端源码模拟
DECLARE
TYPE typ_no IS TABLE OF NUMBER;
v_no_list typ_no := typ_no(7788,7369,7654);
BEGIN
IF (7654 MEMBER OF v_no_list) THEN
dbms_output.put_line('IS MEMBER OF');
END IF;
END;
执行结果如下:
IS MEMBER OF
PL/SQL procedure successfully completed.
SQL>
该功能是判断 7654是否包含在数组 v_no_list 里面。
MogDB
MogDB中不支持Member of ,但可以用 any 操作符来进行比较,见:
https://docs.mogdb.io/zh/mogdb/v5.0/array-expressions#anysome-array
因此,迁移后可改为
DECLARE
TYPE typ_no IS TABLE OF NUMBER;
v_no_list typ_no := typ_no(7788,7369,7654);
BEGIN
/*IF (7654 MEMBER OF v_no_list) THEN*/
IF (7654 = any(v_no_list)) THEN
dbms_output.put_line('IS MEM