2010-10-28 115 views
0

我写了这个函数,现在它总是返回true ...
任何人都可以帮助我吗?为什么这个T-SQL函数总是返回true?


Create FUNCTION dbo.ValidateBranch 
(
    @BranchID nvarchar(50), 
    @Password nvarchar(50) 
) 
RETURNS bit 
AS 
    BEGIN 
    declare @Res bit 

    if exists(Select * From TPasswords Where (BranchID = @BranchID) and (isSecurity = 0) and (Pass = @Password)) 
     set @Res = 1 
    else 
     set @Res = 0 



    RETURN @Res 
    END 

,我callign像这样:


bool isValidBranch = taQueries.ValidateBranch(IDBranch, PasswordTextBox.Text) ?? false; 
+0

不知道,你尝试过在空表? – Benjol 2010-10-28 05:23:57

+0

您需要将此问题的标题更改为有意义的内容。也许像'为什么这个T-SQL函数总是返回true?'。 – Dhaust 2010-10-28 05:25:48

+0

@David:好的,谢谢你的指导...... – 2010-10-28 05:32:43

回答

2

的T-SQL代码看起来很好 - 你怎么“取回的都是真实的” - 在SQL管理工作室,或者从您的应用程序调用这个功能?

你是怎么调用这个函数的,你能告诉我们那段代码吗?

我很快重新设置,并在我的情况下,SQL Server 2008 R2中,当我调用此函数这样它工作得很好:

SELECT dbo.ValidateCenter('Center1', 'Pwd1') -- return 1 
SELECT dbo.ValidateCenter('Center1', 'Pwd1333') -- return 0 
+0

我在C#项目中使用它,并将它添加为查询ADO.Net Dataset ...也通过执行并传递一些现有的值和一些不正确的值来测试SQL Express的这一点 – 2010-10-28 05:25:15

+0

@Dr TJ:您可以添加用于调用此问题的C#代码吗?我认为T-SQL部分应该工作得很好...... – 2010-10-28 05:25:58