2017-10-24 7 views
0

ストアドプロシージャで値をフィルタリングするために使用されるテーブルタイプがあります。テーブルタイプパラメータのカラム名が無効

CREATE TYPE PackageIdType AS TABLE 
( 
    PackageId VARCHAR(150) 
); 

私のストアドプロシージャがこれです:

CREATE PROCEDURE [dbo].[spLocalGetValuesFromTable]  
    @RundateStart datetime, 
    @RundateEnd datetime, 
    @CreationIds PackageIdType READONLY 
AS 
    SELECT * 
    FROM MYTABLE 
    WHERE date BETWEEN @RundateStart AND @RundateEnd 
     AND Ids IN (@CreationIds) 

しかし、私はこの取得中にエラー実行すると:

Msg 207, Level 16, State 1, Procedure spLocalGetValuesFromTable, Line --[Batch Start Line 0]
Invalid column name '@CreationIds'

答えて

3

をそれはテーブルですので、正しい構文が

SELECT * 
FROM MYTABLE 
WHERE date Between @RundateStart And @RundateEnd 
    AND Ids in (SELECT PackageId FROM @CreationIds) 
だろう

これは、テーブル@CreationIdsの各行には、Idsと同じタイプにマップできるIDがMYTABLEです。

関連する問題