2017-10-24 5 views
0

Ich habe einen Tabellentyp, der in einer gespeicherten Prozedur verwendet wird, um Werte herauszufiltern.Ungültiger Spaltenname für Tabellentyp Parameter

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

Meine gespeicherten Prozedur ist dies:

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) 

Aber wenn ich diese immer Fehler ausgeführt:

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

Antwort

3

Es ist eine Tabelle, so dass die korrekte Syntax wäre

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

Dies nimmt th an In jeder Zeile in der Tabelle @CreationIds ist eine ID, die dem gleichen Typ wie Ids in MYTABLE zugeordnet werden kann.

Verwandte Themen