Heim > Datenbank > MySQL-Tutorial > Wie kann ich Ausdrucksergebnisse als Parameter an gespeicherte SQL Server-Prozeduren übergeben?

Wie kann ich Ausdrucksergebnisse als Parameter an gespeicherte SQL Server-Prozeduren übergeben?

Linda Hamilton
Freigeben: 2025-01-11 17:22:45
Original
845 Leute haben es durchsucht

How Can I Pass Expression Results as Parameters to SQL Server Stored Procedures?

Ausdruckseingabe als Parameter einer gespeicherten Prozedur verwenden

Beim Erstellen einer gespeicherten Prozedur kann es zu Schwierigkeiten kommen, das Ergebnis eines Ausdrucks als Parameter zu verwenden. Hier ist ein Beispiel:

<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

Dieser Code löst jedoch einen Fehler aus (SQL Server 2005):

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

Erklärung zu Grammatikfehlern

SQL Server erlaubt solche Vorgänge in Parameterlisten nicht. Es erwartet, dass es sich bei den Argumenten um Literalwerte, deklarierte Variablen oder Ausdrücke ohne Operatoren handelt.

Lösung: Zwischenvariablen verwenden

Um dieses Problem zu lösen, müssen Sie eine Zwischenvariable verwenden. Der korrigierte Code unten veranschaulicht diesen Ansatz:

<code class="language-sql">DECLARE @pID INT;
SET @pID = 1;
DECLARE @logMessage VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));
EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Nach dem Login kopieren

Exec-Anweisungssyntax

Als Referenz lautet die Syntax der EXEC-Anweisung wie folgt:

<code class="language-sql">[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH <execute_option> [ ,...n ] ]
    }
[;]</execute_option></code>
Nach dem Login kopieren

Aktuelle Einschränkungen

In SQL Server sind akzeptable Werte für Parameter in Parameterlisten auf Literalwerte und Systemfunktionen mit dem Präfix @@ beschränkt. Funktionen wie SCOPE_IDENTITY() werden nicht unterstützt.

Das obige ist der detaillierte Inhalt vonWie kann ich Ausdrucksergebnisse als Parameter an gespeicherte SQL Server-Prozeduren übergeben?. 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