2017-10-02 10 views
0

Je passe un paramètre @employeeID à ma procédure SQL Server, que j'utilise comme filtre pour ma requête. Il ne filtre pas les données correctement. Je peux voir que la valeur est du même type que la colonne de filtrage mais n'obtient aucun résultat.Paramètre SQL ne filtrant pas les données appropriées

Voici le code.

CREATE PROCEDURE [dbo].[SearchAssociatesById] 
    @EmployeeID VARCHAR(20) 
AS 
BEGIN 
    PRINT @EmployeeID 

    SET NOCOUNT ON; 

    SELECT * 
    FROM ASSOCIATE A 
    WHERE empl_id = @EmployeeID 
END 

Le résultat est vide, mais la valeur de @employeeID est imprimé correctement. Si je fais la même chose en codant en dur mon employeeID, alors j'obtiens le bon résultat.

Que manque-t-il ici?

Le type de données de Empl_id est varchar(11)

This is when i use variable <code>@EmployeeID</code>

+3

Ca n vous nous donnez des exemples de données afin que nous puissions reproduire le problème? –

+0

Le code affiché devrait fonctionner. Cela signifie qu'il y a quelque chose d'autre qui se passe ici. Je suggère d'utiliser le même type de données que la colonne mais cela ne devrait pas empêcher cela de fonctionner. Quelles valeurs fonctionnent quand vous les codez dur et quel est le code que vous utilisez pour appeler votre procédure? –

+0

Vous pouvez avoir des espaces incorporés dans le paramètre? Des exemples de données et les résultats attendus aideraient. –

Répondre

0

Le code que vous avez fourni fonctionne bien.

Peut-être que le problème est dans les données elles-mêmes.

essayer de modifier votre procédure suivante: -

Alter PROCEDURE [dbo].[SearchAssociatesById] 
@EmployeeID varchar(20) 
AS 
BEGIN 
print @EmployeeID 

SET NOCOUNT ON; 
select * 
FROM ASSOCIATE A 
where rtrim(ltrim(empl_id)) = @EmployeeID 
end 

Demo: -

Create table ASSOCIATE (empl_id varchar(11),name varchar(200)) 
insert into ASSOCIATE values (' 1','aaaaaaaaaaaa') 

en utilisant votre code sans utiliser LTRIM & RTRIM funtions

exec [SearchAssociatesById] '2' 

Résultat: -

enter image description here

et à l'utilisation LTRIM & RTRIM funtions

exec [SearchAssociatesById] '2' 

Résultat: -

enter image description here