为何存储过程中有条件的SQL语句返回了表的所有行?

zhanglan1999 2010-12-31 09:57:43
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表中的所有行,为什么呢?
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oraclefans_ 2010-12-31
  • 打赏
  • 举报
回复
BZ.....
心中的彩虹 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhanglan1999 的回复:]
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
……
[/Quote]


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



  • 打赏
  • 举报
回复
[Quote=引用楼主 zhanglan1999 的回复:]
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
……
[/Quote]
select username --这里字段列表选择你需要的
from usertbl where username = UserName;
Oraclefans_ 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhanglan1999 的回复:]
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

……
[/Quote]

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恒成立啊。。。所以返回所有的值啊。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧