Fallstricke bei Parametern gespeicherter SQL Server-Prozeduren: Umgang mit Ausdrucksergebnissen
Das direkte Übergeben der Ausgabe von Ausdrücken oder Funktionsaufrufen als Parameter in gespeicherten SQL Server-Prozeduren führt häufig zu Fehlern. Lassen Sie uns dies anhand eines häufigen Problems veranschaulichen, das in SQL Server 2005 auftritt:
Der folgende Codeausschnitt generiert einen Syntaxfehler:
<code class="language-sql">DECLARE @pID int; SET @pID = 1; EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
Dies führt zu folgendem Fehler:
<code>Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '+'.</code>
Die Grundursache? SQL Server erlaubt keine direkte Verwendung von Ausdrücken oder Funktionsergebnissen innerhalb der Parameterliste der gespeicherten Prozedur. Die Lösung beinhaltet eine Zwischenvariable.
Hier ist der korrigierte Ansatz:
<code class="language-sql">DECLARE @pID INT; DECLARE @logMessage VARCHAR(50); SET @pID = 1; SET @logMessage = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Dieser überarbeitete Code weist das Ergebnis des Ausdrucks @logMessage
zu, das dann korrekt als dritter Parameter erkannt wird. Die gespeicherte Prozedur wird fehlerfrei ausgeführt.
Es ist wichtig zu beachten: Diese Einschränkung gilt ausschließlich für Parameterwerte; Ausdrücke im Hauptteil der gespeicherten Prozedur sind davon nicht betroffen.
Das obige ist der detaillierte Inhalt vonWie übergebe ich Ausdrucksergebnisse korrekt als gespeicherte Prozedurparameter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!