2010-09-15 2 views
3

J'ai une page dans mon application ASP.Net qui permet de rechercher une base de données via une procédure de stockage. L'un des paramètres transmis au produit stocké est lié à une zone de texte via une liaison ControlParameter.'Prédicat de texte intégral vide ou vide' lors de l'exécution d'une procédure de magasin à partir d'un contrôle lié

<asp:ControlParameter Name="EventDescription" Type="String" ControlID="ucTestLogSearch" PropertyName="EventDescription" /> 

Le texte est transmis à une procédure stockée SQL Server. La procédure stockée définit le paramètre comme ceci:

@event_descrip VARCHAR(200) = NULL, 

Et il utilise le paramètre dans une condition WHERE comme ceci:

(CONTAINS (le.event_descrip, @event_descrip) OR @event_descrip IS NULL) 

Mon problème est que si la zone de texte est vide, je reçois la exception suivante: 'Prédéfini plein texte vide ou vide'. Dans mon expérience, avoir la vérification de null dans la clause WHERE devrait être suffisant pour éviter cette erreur.

En outre, je reçois l'exception lors de l'exécution sur mon serveur de base de données de test, mais pas sur mon serveur de développement. Autant que je peux dire que le serveur exécute la même version de SQL Server. La seule différence est que le serveur de test est en cluster et que le serveur de développement ne l'est pas. Est-ce que quelqu'un peut expliquer pourquoi je reçois cette erreur, pourquoi cela arrive sur un serveur et pas un autre, ou comment je peux contourner ce problème?

+0

double possible de: [7645 Null ou vide prédicat texte intégral] (http://stackoverflow.com/questions/189765/7645-null-or- empty-full-text-predicate) –

+0

La question que vous avez mentionnée n'est pas un doublon car son problème et sa solution sont entièrement contenus dans le serveur SQL et j'ai besoin de résoudre le problème du côté ASP. – epotter

Répondre

2

Declare suivante avant requête de sélection:

IF ISNULL(@event_descrip,'') = '' SET @event_descrip = '""'; 
+0

Cela ne vous donnera pas le résultat correct de la requête. Il comparera avec '""' dans cette colonne plutôt que la chaîne vide et n'ignorera pas la condition. –

Questions connexes