create or replace package PROC_QUESTION_HALF is -- Author : Jamin.Zhang
-- Created : 2010-10-22 15:38:14
-- Purpose : 半年后问卷
-- Public type declarations
type p_cursor is ref cursor;
type t_ret_table is table of varchar2(4000);--用于pl/sql中的split()功能 function get_pwd(
t varchar2
)return varchar2;
function split_str(var_str in varchar2,
var_split in varchar2)
return t_ret_table; function str2tbl( p_str in varchar2 )
return choicetype ;
------------------create or replace package body PROC_QUESTION_HALF is 中对应的代码-----------------
--转换in的条件--处理字符串
--p_str like 'a,b,c,d'
function str2tbl( p_str in varchar2 )
return choicetype
as
l_str long default p_str || ',';
l_n number;
l_data choicetype := choicetype();
begin
loop
l_n := instr( l_str, ',' );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
end loop;
return l_data;
end;--------------------------------------------------------------------------------------------------
问题是在package 中没有声明choicetype
而在package body 中却使用了choicetype
在创建package时一直报错,Compilation errors for PACKAGE SYSTEM.PROC_QUESTION_HALFError: PLS-00201: 必须声明标识符 'CHOICETYPE'
Line: 18
Text: return choicetype ;Error: PL/SQL: Declaration ignored
Line: 17
Text: function str2tbl( p_str in varchar2 )这个不是我写的,拷过来就是这样,不知道这是什么原因,难道是别人也没有定义就可以使用了?请大家帮我看看!
-- Created : 2010-10-22 15:38:14
-- Purpose : 半年后问卷
-- Public type declarations
type p_cursor is ref cursor;
type t_ret_table is table of varchar2(4000);--用于pl/sql中的split()功能 function get_pwd(
t varchar2
)return varchar2;
function split_str(var_str in varchar2,
var_split in varchar2)
return t_ret_table; function str2tbl( p_str in varchar2 )
return choicetype ;
------------------create or replace package body PROC_QUESTION_HALF is 中对应的代码-----------------
--转换in的条件--处理字符串
--p_str like 'a,b,c,d'
function str2tbl( p_str in varchar2 )
return choicetype
as
l_str long default p_str || ',';
l_n number;
l_data choicetype := choicetype();
begin
loop
l_n := instr( l_str, ',' );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
end loop;
return l_data;
end;--------------------------------------------------------------------------------------------------
问题是在package 中没有声明choicetype
而在package body 中却使用了choicetype
在创建package时一直报错,Compilation errors for PACKAGE SYSTEM.PROC_QUESTION_HALFError: PLS-00201: 必须声明标识符 'CHOICETYPE'
Line: 18
Text: return choicetype ;Error: PL/SQL: Declaration ignored
Line: 17
Text: function str2tbl( p_str in varchar2 )这个不是我写的,拷过来就是这样,不知道这是什么原因,难道是别人也没有定义就可以使用了?请大家帮我看看!
var_split in varchar2)
return t_ret_table; function str2tbl( p_str in varchar2 )
return choicetype ;
这里的CHOICETYPE未定义,函数返回值应该是一个嵌套表,游标,或者其他pl/sql数据类型
返回的是return choicetype
as
l_str long default p_str || ',';
l_n number;
l_data choicetype := choicetype();
begin
loop
l_n := instr( l_str, ',' );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
end loop;
return l_data;
end;那应该怎么处理,希望给予指导
create or replace is table of varchar2(500);或者放在包头声明
type choicetype is table of varchar2(500);