关于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;