Wählen Sie nur einige Spalten von Verfahren und einfügen in Tabelle
Ich habe eine gespeicherte Prozedur zurückgibt, die 6 Spalten. Ich möchte aber nur 2 Spalten und legen Sie diese in meine Tabelle variable.
DECLARE @CategoryTable TABLE(
CategoryId Int NOT NULL,
Name nvarchar(255) NOT NULL
)
INSERT INTO @CategoryTable EXEC [GetAllTenantCategories] @TenantId
Wenn ich dieses
Spaltenname oder Anzahl von gelieferten Werte nicht mit der Tabelle
definition
Wie fügt nur die angegebenen Spalten aus einer gespeicherten Prozedur?
Möchte ich nicht verwenden SELECT INTO
da es wird nicht unterstützt, die von SQL Azure
Versucht unter und habe Invalid object name '#Temp'
DECLARE @CategoryTable TABLE(
CategoryId Int NOT NULL,
Name nvarchar(255) NOT NULL
)
INSERT INTO #Temp EXEC [GetAllTenantCategories] 1
INSERT INTO @CategoryTable (CategoryId, Name)
SELECT CategoryId, Name from #Temp
DROP TABLE #Temp
Sie haben entweder @CategoryTable oder GetAllTenantCategories
Ich änderte
es ist mein Fehler, beim Innenausbau
Ich änderte
@CategoryTable
mit allen 6 Spalten definiert. Ich bin noch immer Column name or number of supplied values does not match table definition
es ist mein Fehler, beim Innenausbau
@CategoryTable
ich habe eine Spalte mit IDENTITY(1,1)
Angegeben 🙁InformationsquelleAutor Billa | 2013-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie die Punkte aus https://www.simple-talk.com/sql/performance/execution-plan-basics/
, Wenn der Geschätzte Plan ist Ungültig
In einigen Fällen, die voraussichtliche plan nicht funktioniert hat. Zum Beispiel, versuchen Sie, die geschätzte plan für dieses einfache Stück code:
Werden Sie diese Fehlermeldung erhalten:
Invalid object name 'TempTable'.
Den optimizer, was ist, was wird verwendet, um generieren Geschätzten Ausführungspläne, nicht execute T-SQL.
Laufen tut er die Aussagen über die
algebrizer
, den Prozess weiter oben beschrieben, ist zuständig für die überprüfung der Namen von Datenbankobjekten. Da die Abfrage noch nicht ausgeführt wurde, wird die temporäre Tabelle noch nicht vorhanden ist. Dies ist die Ursache des Fehlers.Running this same bit of code through the Actual execution plan will work perfectly fine.
Hoffe, Sie haben, warum deine temp-Tabelle-Ansatz nicht geklappt 🙂 Da Sie möglicherweise versucht, wie T-SQL
InformationsquelleAutor Murali Murugesan
Können Sie erstellen eine
temp
Tabelle erste und dieINSERT
die erforderlichen Spalten in Ihrertable variable
.Dann können Sie,
Hinaus fallen die #temp-Tabelle,
Invalid object name '#CategoryTable'
Sie müssen deklarieren Sie die Tabelle @CategoryTable wie Sie erklärt haben in Ihrer Frage....siehe meine updates
DECLARE @CategoryTable TABLE( CategoryId Int NOT NULL, Name nvarchar(255) NOT NULL ) INSERT INTO #Temp EXEC [GetAllTenantCategories] @TenantId INSERT INTO @CategoryTable (CategoryId, Name) SELECT CategoryId, Name from #temp DROP TABLE #temp
Ich klebte mein code wieder. Es sagt
Invalid object name #Temp
. Brauche ich zu erklären #Temp?dumme dumme Fehler wie es scheint....wir inserted into #Temp...mit einem Großbuchstaben T und jetzt v r versuchen auf #temp...KLEINER FALL T
InformationsquelleAutor Praveen Nambiar
Wir können OPENQUERY
Finden Sie hier http://smartreferences.blogspot.com/2014/12/insert-result-of-stored-procedure-into.html
InformationsquelleAutor Palanikumar