• A statement is a single piece of work, whereas a batch is a whole set of work.

    So, for example:

    DECLARE @Id INT;

    SET @ID = 52;

    SELECT *

    FROM dbo.MyTable

    WHERE Id = @Id;

    That is one batch with three statements. You'll see a difference in execution results between the batch as a whole and the SET statement. Usually, unless you've got very specific troubleshooting going on, you don't want to collect statement level information using Profiler. It's very processor intensive.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning