Table type parameter in a stored procedure cause operand type clash error

 Admin   
50 View    Nov 3 2020 11:39AM

it was the order of the table type parameter that caused the error !

The table type parameter must be the first in the stored procedure parameters AND ALSO in the arguments passed to the stored procedure call !

The stored procedure :

ALTER PROCEDURE [dbo].[SearchPerson]
    @siteIds IntegerList READONLY, -- THIS PARAMETER HAS TO BE THE FIRST !
    @personType INT = NULL,
    @city NVARCHAR(64) = NULL,
    -- some other params...
AS
    SELECT
        -- some fields...
    FROM dbo.PersonView AS pv
    WHERE
    (
        (@personType IS NULL OR pv.PersonType = @personType) AND
        (@city IS NULL OR pv.City LIKE '%' + @city + '%') AND
        (pv.SiteId in (SELECT si.Value FROM @siteIds AS si)) AND
        
    )

And the call :

DECLARE @siteIds AS XXXX,
@personType AS INT = 1
INSERT INTO @siteIds VALUES (1)
EXEC [dbo].[SearchPerson] @siteIds, @personType 

A sql server bug or am I missing something ?