+ -
当前位置:首页 → 问答吧 → 在oracle中如何调用包中声明的自定义函数

在oracle中如何调用包中声明的自定义函数

时间:2011-12-14

来源:互联网

SQL code
FUNCTION fn_split(pi_str In Varchar2, pi_separator In Varchar2)
    RETURN t_Array IS
  
    idx          Number;   
    currentindex Number := 1;    
    strs         t_Array;   
    v_str        varchar2(4000) := pi_str;   
  BEGIN
  
    IF pi_str IS NOT NULL AND pi_separator IS NOT NULL THEN
      --存在分隔符   
      
    END IF;  
    IF v_str IS NOT NULL THEN
      strs(currentindex) := v_str;
    END IF;
    Return strs;
  END fn_split;

这个自定义函数放在packages内了,没放在fuctions内,在pl/sql developer中如何调用
试了半天报语法错误
SQL code
select commonpackages.fn_split('sdsd,sdsd,sdsd,sdsaasdf',',') from dual;
Select * from emp where ename=commonpackages.fn_split('sdsd,sdsd,sdsd,sdsaasdf',',');

刚接触oralce不好意思

作者: cainiao66   发布时间: 2011-12-14

包名叫commonpackages

作者: cainiao66   发布时间: 2011-12-14

SQL code
declare
ret commonpackages.t_Array;

begin
ret:=Commonpackages.fn_split('7902,sdf,sdfa23,sdf',',');

for i in 1 .. ret.count loop
        dbms_output.put_line(ret(i));
      end loop;
end;

试了半天,终于让我试出来了

作者: cainiao66   发布时间: 2011-12-14

普通的函数 select commonpackages.fn_split('sdsd,sdsd,sdsd,sdsaasdf',',') from dual;这样应该是可以调用的
只是你的返回是列表 就没有试过了。 报什么错啊?

作者: huangdh12   发布时间: 2011-12-14

应该是 t_Array 并不是oracle能够辨别的类型。

作者: huangdh12   发布时间: 2011-12-14

引用 4 楼 huangdh12 的回复:

应该是 t_Array 并不是oracle能够辨别的类型。

嗯,主要是这个原因,像二楼那样就没问题了

作者: cainiao66   发布时间: 2011-12-14

热门下载

更多