2015-10-08 16 views
5

Tôi có một thủ tục được lưu trữ truy xuất ba cột từ nhiều bảng. Tôi muốn nhận được kết quả trong một bảng được định nghĩa bởi nhiều người dùng và chuyển biến này sang một thủ tục khác để thực hiện các phép toán trên dữ liệu biến. Tuy nhiên nó không hoạt động. Tôi có đoạn mã sau. Bất kỳ ý tưởng tại sao nó không hoạt động?Cách gán dữ liệu cho loại bảng do người dùng xác định từ Chọn truy vấn trong 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

gì không làm việc, là những sai sót? – Iztoksson

+0

Hiển thị câu lệnh 'EXECUTE spTest1' của bạn. –

Trả lời

4

Vấn đề là ở đây:

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


Insert @firstStep 
EXEC spSelectData; 

nên là:

DECLARE @firstStep AS Task1TableType; 

Insert INTO @firstStep 
EXEC spSelectData; 

EXEC spTest1 
    @firstStep; 

Không cần để xác định cột nơi loại được xác định, và yêu cầu INSERTINTO khoản. Sau đó thay đổi mã của bạn hoạt động.

SqlFiddleDemo

Các vấn đề liên quan