WÄHLEN Sie bestimmte Spalten aus EXEC stored procedure
Ich habe ein Problem versuchen zu SELECT
bestimmte Spalten aus einer EXEC
- Anweisung in einer gespeicherten Prozedur. Ich bin auf der Suche nach der COUNT(*)
dass die gespeicherte Prozedur gibt die ich bin erfolgreich machen mit :
INSERT INTO #temp
EXEC dbo.my_sp
SET @count = (SELECT COUNT(*) FROM #temp)
DELETE FROM #temp
Allerdings funktioniert dies nur, wenn die zurückgegebenen Spalten entsprechen, die sich speziell mit den Spalten der Tabelle und da bin ich versucht zu finden, die Anzahl der vielen verschiedenen gespeicherte Prozeduren (jeweils zurück, andere Spalten), ich kann nicht diese Methode verwenden, ohne eine neue Tabelle erstellen für jede gespeicherte Prozedur.
Gibt es eine Möglichkeit, ich kann SELECT
bestimmte Spalten aus der EXEC dbo.my_sp
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würde der @@ROWCOUNT-Arbeit für Sie?
http://technet.microsoft.com/en-us/library/ms187316(v=sql.105).aspx
exec
anrufen ist eigentlich die Rückgabe der Daten nicht vor. Ich bin mitEXEC dbo.my_sp1
SET @value1= (SELECT @@ROWCOUNT)
EXEC dbo.my_sp2
SET @value2 = (SELECT @@ROWCOUNT)
SELECT @value1, @value2
ich will nur die zwei Werte, nicht die Werte aus derexec
Erstellen Sie einen loopback-Verbindungsserver für die lokale Instanz, um sicherzustellen, dass der Daten-Zugriff aktiviert ist. Lassen Sie uns sagen, Sie haben einen lokalen benannte Instanz namens
YourServer\SQL2008
:Dann können Sie
OPENQUERY
um eine gespeicherte Prozedur auszuführen, als ob es eine ad-hoc-query.Nun, wenn
dbo.my_sp
dumps Informationen in einer Tabelle #temp erste, wirst du Probleme haben, denn es ist nicht mehr ein block von code, derOPENQUERY
verarbeiten kann. Zum Beispiel, wenn Sie versuchen, auszuführensp_who2
diese Weise, zumindest in SQL Server 2012 erhalten Sie eine Fehlermeldung, aussp_describe_first_result_set
dieOPENQUERY
verändert worden ist, zu verwenden (also vielleicht ist dies für Sie funktioniert, ich weiss jetzt nicht, haben 2008 zu testen, aber es wird ein Problem sein, irgendwann mal):Wenn du gehst zu tun eine Menge, aber warum nicht spezielle gespeicherte Prozeduren (oder fügen Sie Optionen, um diese hier), so dass nur ein count zurückgegeben wird?
OPENQUERY
wurde geändert, um die neuen Verfahren, die intern, und dies ist eine bekannte Einschränkung mit Ihnen (OPENROWSET()
scheitert die gleiche Weise).