2009-03-05 2 views
0

Ich habe den folgenden Code auf einer ASP-Seite:ASP (nicht .NET): Senden von Null als Parameter an gespeicherte Prozedur in Abfragezeichenfolge?

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

Es auf dieser Seite kein anderer Code ist mit Ausnahme einiger enthält, wie ich von einer anderen Seite diese Seite mit Ajax-Aufruf, $ .getJSON mit()

Das Problem ist, dass ich nicht weiß, wie ich NULL als einen der Parameter an den SP senden kann.

Manchmal ist Request.QueryString ("customercode") leer. Ich muss wissen, wie ich das in den Code oben setzen kann, damit der SP diesen Parameter als NULL sieht.

Ich habe Zugriff auf den SP-Code, damit ich etwas auf dieser Seite ändern kann, um eine leere Zeichenfolge in null zu konvertieren.

Vielen Dank im Voraus.

Antwort

1

Sie sind auf dem richtigen Weg. Abfragezeichenfolgenparameter sind nur Zeichenfolgen. Sie müssen also einen für NULL repräsentativen String auswählen, der nicht mit den tatsächlichen String-Werten kollidiert, die Sie senden. Sie könnten eine leere Zeichenfolge, "null" oder "Thomas's spezielles Null-Flag" verwenden. es ist egal. Es gibt keine "offizielle" Darstellung von NULL in einem Abfragezeichenfolgenparameter.

Update: Nein, ich glaube nicht, dass die gespeicherte Prozedur der Ort ist, um mit dieser Übersetzung umzugehen. Der Grund dafür ist, dass die Tatsache, dass Sie die Zeichenfolgendarstellung des Nullwerts im Abfragezeichenfolgenparameter in einen "echten" Nullwert konvertieren, etwas ist, das Sie aufgrund der Einschränkungen dessen tun müssen, was Sie in einen Abfragezeichenfolgenparameter eingeben können. Wenn diese Konvertierung in der gespeicherten Prozedur ausgeführt wird, wird die Prozedur zu einem gewissen Grad die Abfragezeichenfolge "kennen" und das fühlt sich nicht richtig an. Stattdessen würde ich es im aspx-Markup tun, von dem erwartet wird, dass es webfähig ist. Hier ist eine Quelle Beispiel (ungetestet, so beheben meine Syntaxfehler oder besser Änderung string.Format() oder eine parametrisierte Abfrage ...

Wechsel:

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

zu:

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

Und dann sollte ich das in der SP behandeln? Jede Chance, Sie haben ein Beispiel, wie diese Zeichenfolge in MS SQL in Null konvertieren, bevor Sie den Rest des SP? Meine T-SQL-Kenntnisse ist extrem begrenzt :-) –

+0

Siehe aktuelles Beispiel. –

+0

Vielen Dank für Ihre Zeit, Ihr Beispiel enthält, was ich gesucht habe. –

Verwandte Themen