web-dev-qa-db-ja.com

SQL Server2014のSelectクエリからユーザー定義のテーブルタイプにデータを割り当てる方法

複数のテーブルから3つの列を取得するストアドプロシージャがあります。ユーザー定義の複数値テーブルで結果を取得し、変数を別のプロシージャに渡して、変数データに対して操作を実行したいと思います。しかし、それは機能していません。私は次のコードを持っています。なぜそれが機能しないのか考えはありますか?

--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
7

問題はここにあります:

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


Insert @firstStep
EXEC spSelectData;

する必要があります:

DECLARE @firstStep AS Task1TableType;

Insert INTO @firstStep
EXEC spSelectData;

EXEC spTest1
  @firstStep;

タイプが定義されている列を定義する必要はなく、INSERTにはINTO句が必要です。その後、コードを変更すると機能します。

SqlFiddleDemo

7
Lukasz Szozda