函数是不是正在编译oracle?

时间:2017-06-28 10:05:47

标签: oracle plsql oracle11g

我正在创建一个在Oracle中返回表的函数,当我编译它时显示错误:

Error line:
PLS-00382: expression is of wrong type.

这是我的功能:

Create function fn_list(BU number, DU number) return t_table
is
  rec t_table
begin
  /*more codes are here*/
  rec:= t_type(1,1,2)
  return rec;/*error is here*/
end;
end fn_list;

create type t_type is object(ID number,BU number, DU number);

create type t_table is table of t_type;

2 个答案:

答案 0 :(得分:3)

试试这个:

create type t_type is object(ID number,BU number, DU number);
/
create type t_table is table of t_type;
/
Create function fn_list(BU number, DU number) return t_table
is
  rec t_type;
  tab t_table;
begin
  /*more codes are here*/
  rec:= t_type(1,1,2);
  tab := new t_table();
  tab.extend;
  tab(tab.last) := rec;
  return tab;
end fn_list;
/

答案 1 :(得分:1)

您的函数返回t_table类型,但您尝试返回t_type类型。您还有一个额外的END语句和几个缺失的分号。

您可以更正它并将其简化为:

Create function fn_list(BU number, DU number) return t_table
is
begin
  return t_table( t_type(1,1,2) );
end fn_list;
/