CREATE PROCEDURE [ManagerLogin]
(
@userName varchar(20),
@userPwd varchar(20),
@flag int output
)
 ASselect id from ff_manager where userName=@userName and userPwd=@userPwd and auditing=1if (@@RowCount<1)
BEGIN

select id from ff_manager where userName=@userName and userPwd=@userPwd
if (@@RowCount<1)
begin
select id from ff_manager where userName=@userName
if (@@RowCount<1)
set @flag=666
else
set @flag=777
end
else
set @flag=888


END
else
begin
set @flag=999
--更新最后登录时间
update ff_manager set loginCount=loginCount+1,loginTime=GETDATE() WHERE userName=@userName
end
return @flag
GO我在查询分析器是这么写的
declare @flag int
exec ManagerLogin 'admin','admin',@flag output
为什么查询出来的都是 列为ID,值为1呢?   1为表中ID数,表中只有一条记录

解决方案 »

  1.   

    已经以return方式返回了@flag,为何还要定义为output参数?
      

  2.   

    CREATE PROCEDURE [ManagerLogin]
    (
    @userName varchar(20),
    @userPwd varchar(20),
    @flag int output
    )
    AS
    BEGIN
        select id from ff_manager where userName=@userName and userPwd=@userPwd and auditing=1    set @flag=999    if (@@RowCount<1)
        BEGIN
            select id from ff_manager where userName=@userName and userPwd=@userPwd
            
            if (@@RowCount<1)
            begin
                select id from ff_manager where userName=@userName
                
                if (@@RowCount<1)
                    set @flag=666
                else
                    set @flag=777
            end
            else
                set @flag=888    END
        else
        begin
            --更新最后登录时间
            update ff_manager set loginCount=loginCount+1,loginTime=GETDATE() WHERE userName=@userName
        end
        return
    END
    GOdeclare @flag int
    exec ManagerLogin 'admin','admin',@flag output
    select @flag
    go
      

  3.   

    刚开始我是没有return @flag那句的,查询也是1,后来才加上的