如何在使用自己的函数来建立函数索引.
如下函数
create or replace function f_myupper(
  v_str varchar2
) return varchar2
as
begin
  return upper(v_str);
end;
创建函数索引
create index idx_test_table_2 on test_table (f_myupper(name));
产生如下错误:ORA-30553: 函数不能确定

解决方案 »

  1.   

    create index idx_test_table_2 on test_table f_myupper(name);确定name是表test_table 里的一列吗?
      

  2.   

    函数是没问题啊,我是说你能不能调用成功。因为可能你无权调用啊。
    索引后面可能要加tablespace ...,但也许是你函数无权调用的问题。
      

  3.   

    create or replace function f_myupper(
      v_str varchar2
    ) return varchar2
    Deterministic
    as
    begin
      return upper(v_str);
    end;这样写,再把函数重新编译一下。再建立索引
    create index idx_test_table_2 on test_table (f_myupper(name));
      

  4.   

    还有,你的f_myupper和upper是一样的,可能跟这个有关。换成upper应该就行了