SQL Server: Erfassen dynamischer SQL-Abfrageergebnisse in einer Variablen
Gespeicherte Prozeduren nutzen oft dynamisches SQL und erstellen Abfragen im laufenden Betrieb. Die größte Herausforderung besteht darin, die Ergebnisse dieser dynamischen Abfragen innerhalb der Prozedur selbst abzurufen.
Stellen Sie sich dieses Szenario vor:
<code class="language-sql">DECLARE @sqlCommand nvarchar(1000) DECLARE @city varchar(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75)', @city = @city</code>
Dieses Code-Snippet generiert dynamisch eine COUNT(*)
-Abfrage, erfasst jedoch nicht das Ergebnis. Um dieses Problem anzugehen, benötigen wir einen geänderten Ansatz:
<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000) DECLARE @count INT DECLARE @city VARCHAR(75) SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt=COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
Hier eine ausführliche Erklärung:
Ergebnisvariable deklarieren: Wir deklarieren @cnt
als INT
, um die Ausgabe der Abfrage zu speichern.
Dynamisches SQL ändern: Die SELECT
-Anweisung wird angepasst, um das COUNT(*)
-Ergebnis @cnt
zuzuweisen: SELECT @cnt=COUNT(*)
.
Verwenden Sie sp_executesql
mit OUTPUT: sp_executesql
wird mit dem Parameter OUTPUT
verwendet, um anzugeben, dass @cnt
einen Wert aus der Abfrage erhält. Beachten Sie die Parameterdeklaration @cnt int OUTPUT
.
Ergebnis abrufen: Nach der Ausführung enthält @cnt
die Anzahl. SELECT @count
zeigt den gespeicherten Wert an.
Diese verfeinerte Methode erfasst dynamische SQL-Ergebnisse effizient in einer Variablen und ermöglicht so eine weitere Verarbeitung oder Rückgabe innerhalb der gespeicherten Prozedur.
Das obige ist der detaillierte Inhalt vonWie erfasst man dynamische SQL-Abfrageergebnisse in einer Variablen in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!