Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?
2007-04-17 21:07
826 查看
疑惑,希望能搞明白,现在此记录下来,测试脚本如下:
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;
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;
相关文章推荐
- Oracle Class2. SQL查询和SQL函数(Oracle数据类型,ddl,dml,dcl,事务控制语言tcl,sql操作符,sql函数,select语句,运算符,分析函数,临时表)
- The DataDirect provider for Oracle调用存储过程使用Cursor类型参数
- oracle 使用rownum减少自定义函数的调用
- oracle:case 语句使用(用于select子句的case语句中可以使用in这个函数)
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- java调用oracle中输入参数是数组类型的函数或者存储过程
- 使用通过寄存器传递的参数的地址, 作为支持调用其他函数
- 使用正则表达式检验sql语句(只支持select(不含函数,子
- Oracle 有long类型字段的表 使用insert into select 语句 ,出现:ORA-00997 错误
- 使用ODAC调用ORACLE的自定义函数和存储过程
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- <Oracle>函数在一条语句中多次调用出现异常
- oracle使用select语句复制表
- XFire实现自定义类型参数传递和调用返回自定义类型方法
- VB调用DLL时传递自定义类型数组参数注意
- 在C++中用虚函数及模版实现委托(支持自定义参数)
- Oracle包体,包含存储过程,自定义函数(function),自定义类型(table),用函数返回自定义类型(相当于返回一张表)
- Oracle存储过程传入类似java中list、数组类型的参数并使用
- python里函数怎么样使用元组或字典作为参数调用