2015-10-08 5 views
5

Ich habe eine gespeicherte Prozedur, die drei Spalten aus mehreren Tabellen abruft. Ich möchte die Ergebnisse in einer benutzerdefinierten mehrwertigen Tabelle abrufen und die Variable an eine andere Prozedur übergeben, um Vorgänge für die variablen Daten auszuführen. Es funktioniert jedoch nicht. Ich habe den folgenden Code. Irgendeine Idee, warum es nicht funktioniert?So weisen Sie Daten zu einem benutzerdefinierten Tabellentyp zu Wählen Sie Abfrage in SQL Server 2014

--This is the initial stored procedure 
Create Procedure spSelectData 
AS 
BEGIN 
    Select 
     Userid, first_date, last_update 
    From Users 
END 

--This is to create the table type. 
Create type Task1TableType AS TABLE 
(
    Userid nvarchar(20), 
    First_date datetime, 
    Last_update datetime 
) 

--Declare a table of type 
DECLARE @firstStep AS Task1TableType 
(
    Userid nvarchar(20), 
    First_date datetime, 
    Last_update datetime 
) 

Insert @firstStep EXEC spSelectData 

Select * from @firstStep 

-- This is the procedure 1 
CREATE PROC spTest1 
    @TTType Task1TableType READONLY 
AS 
BEGIN 
    Select * from @TTType 
END 
+0

Was nicht funktioniert, sind die Fehler? – Iztoksson

+0

Zeigen Sie Ihre 'EXECUTE spTest1' Anweisung. –

Antwort

4

Das Problem ist hier:

DECLARE @firstStep AS Task1TableType 
(
    Userid nvarchar(20), 
    First_date datetime, 
    Last_update datetime 
) 


Insert @firstStep 
EXEC spSelectData; 

werden sollten:

DECLARE @firstStep AS Task1TableType; 

Insert INTO @firstStep 
EXEC spSelectData; 

EXEC spTest1 
    @firstStep; 

Es besteht keine Notwendigkeit Spalten zu definieren, wo Typ definiert ist, und INSERT erfordern INTO Klausel. Nach dieser Änderung funktioniert Ihr Code.

SqlFiddleDemo

Verwandte Themen