首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于oracle里游标的有关问题!

2012-02-05 
关于oracle里游标的问题!急!--存储过程--用游标的不行createorreplaceprocedureuser_login(v_nicknamevarc

关于oracle里游标的问题!急!
--存储过程
--用游标的不行
create   or   replace   procedure   user_login
(
v_nickname   varchar2,
v_pwd   varchar2
)
is
cursor   login   is   select   *   from   users   where   nickname   =   v_nickname   and   pwd   =   v_pwd;
begin
open   login;
dbms_output.put_line(v_nickname);
dbms_output.put_line(v_pwd);
if   login%rowcount   >   0   then
dbms_output.put_line(v_nickname|| '欢迎你再次光临本网站! ');
else
dbms_output.put_line( '用户 '||v_nickname|| '不存在或密码错误! ');
end   if;
close   login;
end;
--定义v-count参数判断可以
create   or   replace   procedure   user_login
(
v_nickname   varchar2,
v_pwd   varchar2
)
is
v_count   number(4);
begin
select   count(*)     into   v_count   from   users   where   nickname   =   v_nickname   and   pwd   =   v_pwd;      
if   v_count> 0   then  
dbms_output.put_line(v_nickname|| '欢迎你再次光临本网站! ');
else
dbms_output.put_line( '用户 '||v_nickname|| '不存在或密码错误! ');
end   if;end;
为何   我用游标的不可以
dbms_output.put_line(v_nickname);
dbms_output.put_line(v_pwd);
可以输出这2个参数的值
但是cursor   login   is   select   *   from   users   where   nickname   =   v_nickname   and   pwd   =   v_pwd;
这2个参数好象没带进这个游标   这是什么原因哦?

[解决办法]
你的要求没有必要用游标,用第二个存储过程就可以了

如果用游标你可以参考这个
http://community.csdn.net/Expert/TopicView3.asp?id=5453585
[解决办法]
declare
type cursor_type is ref cursor;
s cursor_type;
begin
open s for select * from users where nickname = v_nickname and pwd = v_pwd;
.....你的判断
close s;
end;

热点排行