做不到说明智力有问题!!有本事看题!!
oracle 10g数据库里面有一张表。create table dept(
deptno number(2,0),
dname varchar2(14 byte),
loc varchar2(13 byte),
constraint "pk_dept" primary key(deptno)
);insert into dept values(1,'ACCOUNTING','true');
insert into dept values(2,'classname','true');
insert into dept values(3,'age','true');
insert into dept values(4,'sex','true');
commit;用sql语句写一个存储过程,返回记录集。
在sqlplus 上运行。

解决方案 »

  1.   

    csdn的人才不屑于回答这样的问题。
      

  2.   

    SQL> ed
    已写入 file afiedt.buf  1  create or replace function get_dept return dept_t_type pipelined as v dept_type;
      2  begin
      3    for row_dept in (select deptno,dname,loc from dept) loop
      4      v := dept_type(row_dept.deptno,row_dept.dname,row_dept.loc);
      5      pipe row(v);
      6    end loop;
      7    return;
      8* end;
    SQL> /函数已创建。SQL> select * from get_dept;
    select * from get_dept
                  *
    第 1 行出现错误:
    ORA-04044: 此处不允许过程, 函数, 程序包或类型
    SQL> select * from table(get_dept);    DEPTNO DNAME          LOC
    ---------- -------------- -------------
             1 ACCOUNTING     true
             2 classname      true
             3 age            true
             4 sex            true用函数可以吗
      

  3.   

    伙计低调点,说实话一楼说的不错,不要用这种法子来激将csdn,csdn上的越看越反感啊。还好我不太在意,顺手拉来一个例子给你看,相信凭你的智力该知道怎么做了。
    CREATE OR REPLACE PACKAGE PACK_TEST
    AS 
    --这个是游标
        TYPE TESTCUR IS REF CURSOR;
    --这个是过程 
        PROCEDURE sp_test1(P_CUR OUT TESTCUR); 
    END PACK_TEST; 
    --声明包体
    CREATE OR REPLACE PACKAGE BODY PACK_TEST
    AS
    PROCEDURE sp_test1(P_CUR OUT TESTCUR) is
    strsql varchar2(1000);
    begin
    strsql:='select * from test_table ;
    open p_cur for strsql ;
    end sp_test1; 
    end PACK_TEST;