2017-05-18 10 views
1

nicht laden Ich versuche, Ergebnismenge gespeicherte gespeicherte Prozedur in einer temporären Tabelle zu laden, aber Daten werden nicht in die temporäre Tabelle geladen. Die Ergebnisse der gespeicherten Prozedur werden nicht in der temporären Tabelle gespeichert. Es zeigt "0 Zeilen betroffen" an.Konnte gespeicherte Prozedur Ergebnismenge in temporäre Tabelle in SQL Server

Beispiel # 1:

EXEC dbo.emp 

(10 row(s) affected) 

Beispiel # @:

insert into #tempemp 
    EXEC dbo.emp 

(0 row(s) affected) 

10 Zeilen werden nicht in die temporäre Tabelle geladen.

ich so versucht:

insert into #tempemp 
    EXEC sp_executesql @tsql = N'EXEC(''EXEC dbo.emp '') 
     with RESULT SETS 
(
    (
      EMPID varchar(100) 
      ,EMPName VARCHAR(100) 
      ,EMPCode VARCHAR(7) 
      ,EMPNumber VARCHAR(20) 
      ,[STATE] VARCHAR(50) 
      ,City VARCHAR(50) 
      ,Zip VARCHAR(20) 
      ,CustomerTypeName VARCHAR(100) 
      ,StatusCD VARCHAR(50) 
      ,FilterCode VARCHAR(100) 
    ) 
)' 

aber ich bekomme nur einen Fehler:

Msg 11536, Ebene 16, Status 1, 1 Line
EXECUTE-Anweisung ist fehlgeschlagen, weil seine WITH RESULT SETS Klausel angegeben 1 Ergebnismenge (n), aber die Anweisung gesendet nur 0 Ergebnismenge (n) bei Lauf Zeit.

Die gespeicherte Prozedur gibt jedoch nur eine Ergebnismenge zurück.

Kann mir jemand dabei helfen?

Danke.

+0

Ich nehme an, dass Sie die temporäre Tabelle erstellen, bevor Sie die Anweisung ausführen? Sie haben diesen Code nicht eingefügt. –

+0

Sie finden die Problemumgehung [hier] (http://stackoverflow.com/questions/653714/inser-results-of-a-stored-procedure-into-a-temporary-table/1228165#1228165). Es funktioniert nicht so, Sie können das Ergebnis einer gespeicherten Prozedur nicht sofort in eine Tabelle einfügen. –

+2

Mögliches Duplikat von [Ergebnisse einer gespeicherten Prozedur in eine temporäre Tabelle einfügen] (http://stackoverflow.com/questions/653714/insert-results-of-a-stored-procedure-into-a-miremporary-table) –

Antwort

0

Wenn der Test stattfinden soll, sollte er sich auf demselben Objekt befinden. Keiner von uns haben Ihre SP, aber ich weiß, dass ich diese haben, und es funktioniert gut auf meinem Ende:

CREATE PROCEDURE DUCKLING AS BEGIN SELECT 1 END 

CREATE TABLE #TEMP (ID INT) 

INSERT INTO #TEMP EXEC DUCKLING 

SELECT * FROM #TEMP 

Vielleicht können Sie versuchen, dass und/oder teilen Sie uns Ihre SP-Code. Ob ein alternativer SP (wie DUCKLING) funktioniert oder nicht, würde uns helfen, das Problem genauer zu untersuchen.

+0

im Allgemeinen Ihr Szenario wird funktionieren.Ich benutze das gleiche Szenario in anderen gespeicherten Prozeduren.aber Problem mit gespeicherten Prozedur ist Ich habe viele temporäre Tabellen und gespeicherte Prozeduren in sp dbo.emp aus diesem Grund Daten nicht in temporäre Tabelle geladen.Ich dachte, Meta Datenproblem für temporäre Tabellen.also habe ich die temporäre Tabelle in die Tabellenvariable geändert, die immer noch keine Daten lädt. Danke für die Antwort. – Rajashekhar

0

Ich kann nicht einfach noch kommentieren, da ich ein Noob bin.

Es sieht für mich so aus, als ob Sie die Ausgabe von exec dbo.emp erwarten. Ich sehe (10) Zeilen, aber ich würde Ergebnisse erwarten, wie Sie in einer Select-Anweisung erhalten würden.

Sie müssen wahrscheinlich nur eine Select-Anweisung am Ende von dbo.emp setzen, um alles auszugeben und dann sollte Ihr Insert wie vorgesehen funktionieren.

Verwandte Themen