2009-03-05 7 views
0

je le code suivant sur une page ASP:ASP (pas .NET): envoi de null comme paramètre à la procédure stockée dans la chaîne de requête?

<% 
    QueryToJSON(conn, "execute WebGetEmployeesPlanned'" 
    +Request.QueryString("customercode")+"', 
    '"+Request.QueryString("lang")+"', 
    '"+Request.QueryString("date")+"'").flush 
%> 

Il n'y a pas d'autre code sur cette page, sauf quelques-uns comprend, comme je l'appelle cette page avec ajax d'une autre page, en utilisant .getJSON $()

Le problème est que je ne sais pas comment je peux envoyer NULL comme l'un des paramètres du SP.

Parfois, Request.QueryString ("customercode") sera vide. J'ai besoin de savoir comment je peux mettre cela dans le code ci-dessus pour faire le SP voir ce paramètre comme NULL.

J'ai accès au code SP afin que je puisse changer quelque chose de ce côté pour convertir une chaîne vide en null.

Merci d'avance.

Répondre

1

Vous êtes sur la bonne voie. Les paramètres de chaîne de requête sont juste des chaînes. Vous devez donc choisir un représentant de chaîne pour NULL qui ne sera pas en conflit avec l'une des valeurs de chaîne réelles que vous enverrez. Vous pouvez utiliser une chaîne vide, "null", ou "le drapeau nul spécial de Thomas"; ça n'a pas d'importance. Il n'y a pas de représentation "officielle" de NULL dans un paramètre de chaîne de requête.

Mise à jour: non, je ne pense pas que la procédure stockée est l'endroit pour gérer cette traduction. La raison en est que le fait que vous convertissiez votre représentation sous forme de chaîne de la valeur null dans le paramètre de chaîne de requête en une valeur "réelle" est quelque chose à faire en raison des limitations de ce que vous pouvez mettre dans un paramètre de chaîne de requête. Faire cette conversion dans la procédure stockée rendrait la procédure, dans une certaine mesure, "au courant" de la chaîne de requête, et cela ne va pas. Au lieu de cela, je le ferais dans le balisage aspx, qui devrait être sensible au web. Voici un exemple de source (non testé, donc corriger mes erreurs de syntaxe ou, mieux, passez à string.Format() ou une requête paramétrées ...

Change:

QueryToJSON(conn, "execute WebGetEmployeesPlanned'" 
+Request.QueryString("customercode")+"', 
'"+Request.QueryString("lang")+"', 
'"+Request.QueryString("date")+"'").flush 

à:

QueryToJSON(conn, "execute WebGetEmployeesPlanned " 
    + (string.IsNullOrEmpty(Request.QueryString("customercode")) ? 
      "null, '" 
      : 
      "'" + Request.QueryString("customercode") + "','") 
    +Request.QueryString("customercode")+"', 
    '"+Request.QueryString("lang")+"', 
    '"+Request.QueryString("date")+"'").flush 
+0

Et puis je devrais gérer cela dans le SP? N'importe quelle chance vous avez un exemple de la façon de convertir ce représentant de chaîne en MS SQL à zéro, avant d'exécuter le reste du SP? Mes connaissances T-SQL sont extrêmement limitées :-) –

+0

Voir l'exemple mis à jour. –

+0

Merci beaucoup pour votre temps, votre exemple contient ce que je cherchais. –

Questions connexes