sqlserver和sybase在存储过程中能直接返回结果集!
但是oracle不能这样写:select * from 
你要先定义一个cursor type!
然后用这个cursor来返回!!
1、
CREATE OR REPLACE  PACKAGE "SCOTT"."HWTYPE" as
  TYPE HWCURSOR IS REF CURSOR;
end;
2、
CREATE OR REPLACE  PROCEDURE "SCOTT"."PROC_TEST_CURSOR" (DDD OUT 
    HWTYPE.HWCURSOR)
 as
var_DEPTNO DEPT.DEPTNO%TYPE;
var_DNAME  DEPT.DNAME%TYPE;
var_LOC    DEPT.LOC%TYPE;
begin
 
 --这样可以动态设置游标了。
 AA:='SELECT DEPTNO,DNAME,LOC FROM DEPT';
 open DDD for aa;
 
 
 --用起来和一般游标一样。
 FETCH DDD INTO var_DEPTNO,var_DNAME,var_LOC;  
 WHILE DDD%FOUND LOOP
 
  DBMS_OUTPUT.PUT_LINE(var_DEPTNO);   
  DBMS_OUTPUT.PUT_LINE(var_DNAME);
  DBMS_OUTPUT.PUT_LINE(var_LOC);
  FETCH DDD INTO var_DEPTNO,var_DNAME,var_LOC; 
 END LOOP;
 CLOSE DDD;
 
EXCEPTION
WHEN OTHERS THEN
  IF DDD%ISOPEN THEN
    CLOSE DDD;
  END IF; 
  
  
 
end;
3、sqlplus中进行测试:set serverout on
var aa REFCURSOR
exec scott.PROC_TEST_CURSOR(:aa);
print :aa;这么用就行了!