Oracle PLS-00905:对象无效

jimmy19920728 2015-12-07 10:31:16
我添加下面的function,报错Oracle PLS-00905:对象BHRESVFEE.STR_ARRAY无效,请问如何解决?

Error: PLS-00905: 对象 BHRESVFEE.STR_ARRAY 无效
Line: 2
Text: RETURN str_array

Error: PL/SQL: Compilation unit analysis terminated
Line: 0
Text: CREATE OR REPLACE FUNCTION "FN_SPLIT" (p_str IN long, p_delimiter IN VARCHAR2)

CREATE OR REPLACE FUNCTION "FN_SPLIT" (p_str IN long, p_delimiter IN VARCHAR2)
RETURN str_array
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str long(8000);
str_split str_array := str_array ();
BEGIN
len := LENGTH (p_str);
len1 := LENGTH (p_delimiter);

WHILE j < len
LOOP
j := INSTR (p_str, p_delimiter, i);

IF j = 0
THEN
j := len;
str := SUBSTR (p_str, i);
str_split.EXTEND;
str_split (str_split.COUNT) := str;

IF i >= len
THEN
EXIT;
END IF;
ELSE
str := SUBSTR (p_str, i, j - i);
i := j + len1;
str_split.EXTEND;
str_split (str_split.COUNT) := str;
END IF;
END LOOP;

RETURN str_split;
END fn_split;
...全文
3615 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
无招IT 2015-12-29
  • 打赏
  • 举报
回复
我也遇到同样报错,搞不定啊,恼火的很啊
jimmy19920728 2015-12-07
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
STR_ARRAY ,这个对象应该一个 TYPE ,你手动的创建一个,应该就可以了。
我手动创建了一个 type STR_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; timerange STR_ARRAY; 用这个语句可以吗,因为以前没接触过Oracle,比较小白。
卖水果的net 2015-12-07
  • 打赏
  • 举报
回复
STR_ARRAY ,这个对象应该一个 TYPE ,你手动的创建一个,应该就可以了。
jimmy19920728 2015-12-07
  • 打赏
  • 举报
回复
已经查到了 CREATE OR REPLACE TYPE str_array IS TABLE OF VARCHAR2(4000); 用这句创建就好了

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧