• Christian Buettner-167247 (5/27/2013)


    Good question, but the answer is wrong.

    SQL Server evaluates object references during parse time. Flow-control logic is not applied at this stage.

    This is not true. If you change the temporary table to a regular table (e.g. dbo.Tab), the script will work.

    DECLARE @MoreColumns bit;

    SET @MoreColumns = 1

    IF @MoreColumns = 0

    CREATE TABLE dbo.Tab (

    id int,

    name varchar(50)

    );

    ELSE

    BEGIN

    CREATE TABLE dbo.Tab (

    id int,

    name varchar(50),

    Description varchar(8000),

    nvarchar(200)

    )

    END

    GO

    DROP TABLE dbo.Tab

    If more than one temporary table is created inside a single stored procedure or batch, they must have different names

    ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/1e068443-b9ea-486a-804f-ce7b6e048e8b.htm

    Obviously SQL Server does not care if the two create table statements are mutually exclusive and does not allow that.

    +1

    I think table variable and temp tables will be created at compilation time, so control flow logic will not work here.

    can someone pour more light on it?

    --
    Dineshbabu
    Desire to learn new things..