Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich Ausdrucksergebnisse korrekt als gespeicherte Prozedurparameter?

Wie übergebe ich Ausdrucksergebnisse korrekt als gespeicherte Prozedurparameter?

Patricia Arquette
Freigeben: 2025-01-11 17:12:43
Original
560 Leute haben es durchsucht

How to Correctly Pass Expression Results as Stored Procedure Parameters?

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>
Nach dem Login kopieren

Dies führt zu folgendem Fehler:

<code>Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '+'.</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage