应该是
select UserName into p_tempname,pwd into p_temppwd from Users
                where UserID = p_userid;
它有问题。
拿出来测试一下看看!

解决方案 »

  1.   

    create or replace procedure sp_rights_getloginuser
    (
        p_userid          Users.Userid%TYPE,
        p_password        out Users.Pwd%TYPE,
        p_username        out Users.Username%TYPE
    )
    As
    Begin
         declare p_tempname varchar2(20);
         declare p_temppwd varchar2(10);
         begin
             select UserName into p_tempname,pwd into p_temppwd from Users
                    where UserID = p_userid;
             p_username := p_tempname;
             p_password := p_temppwd;
        end;
    end;
    /
    我用的oracle 9i。select UserName into p_tempname,pwd into p_temppwd from Users
                    where UserID = p_userid;
    有什么问题?这么简单一段代码,错误到底在那里?
      

  2.   

    正确的写法:
    create or replace procedure sp_rights_getloginuser
    (
        p_userid          Users.Userid%TYPE,
        p_password        out Users.Pwd%TYPE,
        p_username        out Users.Username%TYPE
    )
    As
    Begin
         declare 
                 p_tempname varchar2(20);
                 p_temppwd varchar2(10) ;
         begin
             select UserName,Pwd into p_tempname,p_temppwd from Users
                    where UserID = p_userid;
             p_username := p_tempname;
             p_password := p_temppwd;
        end;
    end;
    /
      

  3.   

    错误句:
    select UserName into p_tempname,pwd into p_temppwd from Users
                    where UserID = p_userid;注:上面的写法适用于 SqlServer,在Oracle中下面的语法才是对的。
    select UserName,Pwd into p_tempname,p_temppwd from Users
                    where UserID = p_userid;
      

  4.   

    select UserName into p_tempname,pwd into p_temppwd from Users
                    where UserID = p_userid;选出来的字段数和变量数不相等.