All of my tables have those two columns:

    [Id] [uniqueidentifier] NOT NULL
    [Revision] [bigint] IDENTITY(1, 1) NOT NULL

Every other time I write a query, I want to eliminate some of the rows. The elimination conditions are the same for every table. I want an easy way to specify those conditions once and then reuse them on any table.

I defined a table type as a "base class" for my tables

    CREATE TYPE EntityTable AS TABLE (
    	[Id] [uniqueidentifier] NOT NULL
    	,[Revision] [bigint] IDENTITY(1, 1) NOT NULL
    )

And here's a table valued function I create

    CREATE FUNCTION MaxRevision (@Entities EntityTable READONLY)
    RETURNS TABLE
    AS
    RETURN
    
    SELECT *
    FROM @Entities e
    WHERE e.Revision = (
    		SELECT max(Revision)
    		FROM @Entities er
    		WHERE er.id = e.id
    		)

I thought I would be able to use it like that

    SELECT * FROM MaxRevision(NameOfSomeTableWhichHasIdAndRevisionColumn) WHERE /* some other conditions */

But I'm getting the error

    Msg 207, Level 16, State 1, Line 2
    Invalid column name 'NameOfSomeTableWhichHasIdAndRevisionColumn'.

Why it treats the table name I pass as a column name? Are there any other ways to implement the behavior I want?