2010-10-28 2 views
0

J'ai écrit cette fonction et maintenant son retour toujours vrai ...
quelqu'un peut-il m'aider?Pourquoi cette fonction T-SQL retourne-t-elle toujours vrai?


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 

et je suis callign comme ceci:


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

Aucune idée, avez-vous essayé sur une table vide? – Benjol

+0

Vous devez changer le titre de cette question pour quelque chose de significatif. Peut-être quelque chose comme "Pourquoi cette fonction T-SQL retourne-t-elle toujours vrai?". – Dhaust

+0

@David: ok, merci pour vos conseils ... –

Répondre

2

Le code T-SQL semble bien - comment voulez-vous "obtenez toujours en arrière vrai" - dans SQL Mgmt Studio ou de votre appel d'application cette fonction ??

Comment appelez-vous cette fonction, pouvez-vous nous montrer ce morceau de code ??

Je recréés rapidement la configuration et dans mon cas, sur SQL Server 2008 R2, il fonctionne très bien quand je l'appelle cette fonction comme ceci:

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

je l'utilise dans un projet C# et l'a ajouté comme une requête dans un ADO.Net Dataset ... a également testé cela à partir de SQL Express en exécutant et en passant des valeurs existantes et des valeurs incorrectes –

+0

@Dr TJ: pouvez-vous ajouter le code C# que vous utilisez pour l'appeler à votre question ?? Je pense que la partie T-SQL devrait fonctionner très bien ... –

Questions connexes