试试这个:create table test(id varchar2(3),work_date date,content varchar2(1000),primary key (id,work_date));
insert into test values('001',to_date('2003-02-01','yyyy-mm-dd'),'adfsadf');
insert into test values('001',to_date('2003-02-11','yyyy-mm-dd'),'adfsadf');
insert into test values('003',to_date('2003-02-11','yyyy-mm-dd'),'adfsadf');
commit;create or replace type my_object as object(
  id varchar2(3),
  work_date date
)
/
create or replace type myTableType 
as table of my_object
/
CREATE OR REPLACE  FUNCTION Uf_Result (as_id varchar2,as_date varchar2 default '2003-02')
RETURN Mytabletype 
IS
My_Result Mytabletype := Mytabletype();
ll_num number;
ll_loop number;
ld_date date;
BEGIN

select to_date(to_date(as_date,'yyyy-mm')) into ld_date
from dual; select to_char(last_day(ld_date),'dd') 
into ll_num
from dual;

FOR ll_loop IN 1..ll_num 
LOOP
My_Result.EXTEND;
My_Result(ll_loop) := My_Object(as_id,ld_date ); select ld_date + 1 into ld_date
from dual;
END LOOP; RETURN My_Result;
END;
/
SELECT * FROM 
TABLE(CAST(UF_RESULT('001') AS myTableType));

解决方案 »

  1.   

    我有一个过程myprocedure(a in varchar2, b out varchar2, c out 这个要求是一个Pl/QSL表)
    我在过程结束后要返回b和c,我怎样来定义c,并在过程中给c赋值?
      

  2.   

    c out 这个要求是一个Pl/QSL表是表名還是表中的數據?
      

  3.   

    那不就还是一个varchar2呀
      

  4.   

    ...
    ..c varchar
    ...  select tname into c
      from tab
      where tname like ...
      

  5.   

    to baojianjun(包子) 
    假如我的mytable表中有XX,YY两个字段,
    我要返回的就是XX YY这两个字段!怎么做?
      

  6.   

    ...
    ..c varchar
    ...
    as
      cursor cur_column is
      select column_name 
      from   all_tab_columns
      where  table_name = your_table_name;
    begin
       ....
       c:='';
       for c_column in cur_column loop
           c:=c||c_column;
       end loop;
       ...
    end;
    /