Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?

疑惑,希望能搞明白,现在此记录下来,测试脚本如下:

DECLARE
/* TYPE Envelop IS RECORD( --外包矩形结构
Xmin NUMBER,
Ymin NUMBER,
Xmax NUMBER,
Ymax NUMBER);*/

v_Env Common_Util.Envelop;
i NUMBER;
BEGIN
v_Env.Xmin := 0;
v_Env.Ymin := 0;
v_Env.Xmax := 0;
v_Env.Ymax := 0;

--test 1
IF is_intersected(v_Env, 0, 0, 0, 0) = 1 THEN--通过
NULL;
END IF;
--test 2
IF common_util.is_intersected(v_Env, 0, 0, 0, 0) = 1 THEN--通过
NULL;
END IF;

--test 3
SELECT 0 INTO i FROM dual;--词句通过

--test 4
SELECT 0 INTO i FROM dual WHERE common_util.test1(1, 0) = 1;--此句通过

--test 5
--SELECT 0 INTO i FROM dual WHERE 1 = common_util.is_intersected(v_Env, 0, 0, 0, 0);
--test 6
--SELECT 0 INTO i FROM dual WHERE 1 = common_util.is_intersected(v_Env, 0, 0, 0, 0);
--此句出错,pls-00382错误,调了半晚上,最终放弃
--前边的test1,2,3,4均能够通过,故此推断is_intersected函数本身没有问题,类型定义也没有问题
--最后总结是:
--select语句中自定义函数中不能使用自定义类型作参数,但是我没有找到关于此的资料说明,不知道正确不正确
--那位高手看到请赐教!
END;

原文地址:https://www.cnblogs.com/flyingfish/p/717325.html