2010-10-28 111 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