我定义了一个对象类型dateType,用于保存一个data值create or replace type dateType as object (
val date,
map member function equl return date
)
create table dt (val dateType);
往表中插入数据
insert into dt values(to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss'));--会报‘类型不同’错误
怎么才能把date类型的值隐式转换成dateType?insert into dt values(dateType(to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss'))); --不会报错
显示转换使用dateType(to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss')))是可以实现
但是我的select语句中不能使用dateType()去显示转换,oracle本身不会隐式地调用构造函数。
这个问题是在实现一个date类型的扩展索引时候遇到的。
有一个函数 STATIC FUNCTION ODCIIndexStart(star dateType,...) 
我要把一个date类型的值隐式转换成dateType参数传进去该怎么实现?

解决方案 »

  1.   

    参考下面信息
     如何在Oracle中向Collection类型的变量中逐条插入数据。
    declare
    dateType_                dateType ;
    BEGIN
    dateType_ := dateType(to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss'));
    然后再使用
      

  2.   


    这样语句已经经过处理了。
    我是想不通过其他处理就把to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss')作为值传递到一个带有dateType类型参数的函数。
    不知道能不能在类型定义中做一些处理?
      

  3.   


    这样语句已经经过处理了。
    我是想不通过其他处理就把to_date('2008-07-04 00:22:22','yyyy-mm-dd hh24:mi:ss')作为值传递到一个带有dateType类型参数的函数。
    不知道能不能在类型定义中做一些处理?