CREATE OR REPLACE PACKAGE pkg_tableType
IS
     type Tabletype is ref cursor;
     END;create or replace procedure GetObjectOfUser2(UserName in varchar2, dataset out pkg_tableType.Tabletype) is
begin
  Open dataset For
  select * from usertbl where username = UserName;
end GetObjectOfUser2;我的本意是要返回某个用户名的行,但是执行结果却是它返回了usertbl表中的所有行,为什么呢?

解决方案 »

  1.   


    create or replace procedure GetObjectOfUser2(User_Name in varchar2, dataset out pkg_tableType.Tabletype) is
    begin
      Open dataset For
      select * from usertbl where username = User_Name;
    end GetObjectOfUser2;很明显啊。。你的变量名字和的列名一样,username=username恒成立啊所以返回所有的值啊。
      

  2.   

     select username --这里字段列表选择你需要的
    from usertbl where username = UserName;
      

  3.   

    create or replace procedure GetObjectOfUser2(v_UserName in varchar2, dataset out pkg_tableType.Tabletype) is
    begin
      Open dataset For
      select * from usertbl where username =v_UserName;
    end GetObjectOfUser2;select * from tbname where col=col 这个条件永远是true  如同于select * from tbname