Übergabe des NULL-Wertparameters an die dynamische SQL-Abfrage. Wie kann dies erfolgreich durchgeführt werden?

8

Ich führe eine dynamische SQL-Abfrage aus. wo Parameter dynamisch übergeben werden. Ich schrieb zuerst ähnlich dem folgenden Code.

%Vor%
  

Dann habe ich das geschrieben.

%Vor%
  

Dieser Zeitcode wurde erfolgreich ausgeführt. Da der Parameter leer sein kann, muss ich das in null umwandeln. Ich änderte den Code und schrieb dies

%Vor%
  

Keine Fehler. Die Abfrage ist abgestürzt.
Hat jemand diese Art von Problem?

    
Aslam Jiffry 24.06.2015, 06:12
quelle

9 Antworten

1

Sie müssen es nicht in NULL konvertieren, sondern prüfen Sie einfach mit Ihrem Wert

%Vor%     
tarzanbappa 24.06.2015, 06:47
quelle
3

Sie sollten sp_executeSQL verwenden und die String-Verkettung wie folgt entfernen. Ich gehe davon aus, dass, wenn NULL übergeben wird, alle Zeilen zurückgegeben werden sollen.

Abfrage

%Vor%     
ughai 24.06.2015 06:19
quelle
3

Versuchen Sie Folgendes:

%Vor%

Wenn der Parameter vom Client kommt, machen Sie besser mit der parametrisierten Abfrage (siehe @ ughai's Antwort), um sql injection möglichkeit auszuschließen ...

    
Giorgi Nakeuri 24.06.2015 06:15
quelle
2

Alles mit der Arithmetik von NULL ergibt NULL.

Ich würde dies tun, wenn NULL für die Rückgabe aller Zeilen gedacht ist:

%Vor%

Und so, wenn Sie wirklich Zeilen mit NULL-Bedingung haben wollen:

%Vor%

Aber andererseits wäre es immer besser, dynamische Abfragen um jeden Preis zu vermeiden. Überlegen Sie:

%Vor%

Und:

%Vor%     
Irawan Soetomo 24.06.2015 07:32
quelle
1

Versuchen Sie es.

%Vor%     
Nitin Varpe 24.06.2015 06:17
quelle
1

probiere das

aus %Vor%     
Arunprasanth K V 24.06.2015 07:10
quelle
0
%Vor%

Sie sollten eine parametrisierte Abfrage verwenden, wenn Sie dynamisches SQL verwenden, um SQL Injection zu vermeiden. Lesen Sie < stark> dies für weitere Informationen.

Wenn Sie alle Zeilen zurückgeben möchten, wenn @Id passed NULL ist, entfernen Sie einfach ELSE part.

    
Felix Pamittan 24.06.2015 06:21
quelle
0

Sie können auch schreiben als:

%Vor%     
Deepshikha 24.06.2015 06:28
quelle
0

Ich bin neugierig, wieso niemand darauf hinweist, dass hier kein dynamisches SQL verwendet werden muss.

%Vor%     
Eric 24.06.2015 06:40
quelle

Tags und Links