2012-02-04 42 views
3

我想调用一个存储过程,它需要两个参数(用户名&密码)并返回两个值类型int('result'和'group')'result'用于检查用户是否有效或不和“组”只是表明用户的组号 有三种类型组 组#1:admin用户 组#2:自定义用户 grpup#3:特殊用户需要两个来自存储过程的返回值在c#

下面是我目前的代码,它只返回结果

ALTER PROCEDURE [dbo].[suserpass] 
@username Varchar(50), 
@password varchar(50), 
@result int OUTPUT, 
@group int OUTPUT 

AS 
IF EXISTS (select [user] from [userpassTable] where [user] = @username and [pass][email protected]) 
    set @result=1 

else 
    set @result=0 

谢谢

回答

0

你需要为下面你需要设置两个输出变量,会做你的任务做soemthing .....

ALTER PROCEDURE [dbo].[suserpass] 
    @username Varchar(50), 
    @password varchar(50), 
    @result int OUTPUT, 
    @group int OUTPUT 

    AS 
    IF EXISTS (select [user] from [userpassTable] where [user] = @username and [pass][email protected]) 
    begin 
     select @result=1 
     select @group = usergroup from [userpassTable] where [user] = @username and [pass][email protected] 
    end 
    else 
    begin 
     select @result=0 
     select @group=0 
    end 
0

设置两个输出参数。

你可以这样说:

IF EXISTS (SELECT [user] FROM [userpassTable] 
      WHERE [user] = @username AND [pass] = @password) 
BEGIN 
    SELECT @result=1 , @group = group 
    FROM [userpassTable] 
    WHERE [user] = @username 
END 
else 
BEGIN 
    SELECT @result=0 , @group = 0 -- group 0 doesn't exist, used as user does exist 
END 

我已经添加了可读性BEGIN/END块,并允许多个语句。

在C#都@result@group应设置为输出参数。

+0

如何将他使用这些值?它必须经过#t。 – 2012-02-04 13:46:59

+0

@RoyiNamir - 我不关注。什么是'#t'? – Oded 2012-02-04 13:48:33

+0

tmp表........ – 2012-02-04 13:49:07

0

我想的是,在概念上,您正在寻找这样的事情(避风港“T测试的代码):

ALTER PROCEDURE [dbo].[suserpass] 
@username Varchar(50), 
@password varchar(50), 
@result int OUTPUT, 
@group int OUTPUT 

AS 
IF EXISTS (select [user] from [userpassTable] where [user] = @username and [pass] = @password) 
    BEGIN 
    set @result = 1 
    set @group = (select (top 1) [groupType] from [userGroupTable] where [user] = @username) 
    END 
else  
    set @result=0