I couldn't get it to work without a minor tweak.
I changed the following snippets...
SELECT @ConctColNme = CASE WHEN @IdentityColumn = @ColumnName
THEN ''
ELSE @ConctColNme + @ColumnName + ','
END
SELECT @DeclareCol = CASE WHEN @IdentityColumn = @ColumnName
THEN @DeclareCol
ELSE @DeclareCol + '@'+@ColumnName +' '+ @DataType +CASE WHEN @CharacterLen IS NOT NULL THEN '('+@CharacterLen+')' ELSE '' END + ','
END
SELECT @DeclareCol2 = CASE WHEN @IdentityColumn = @ColumnName
THEN ''
ELSE @DeclareCol2 + '@'+@ColumnName + ','
END
SELECT @DeclareCol3 = CASE WHEN @IdentityColumn = @ColumnName
THEN ''
to
SELECT @ConctColNme = CASE WHEN @IdentityColumn = @ColumnName
THEN @ConctColNme
ELSE @ConctColNme + @ColumnName + ','
END
SELECT @DeclareCol = CASE WHEN @IdentityColumn = @ColumnName
THEN @DeclareCol
ELSE @DeclareCol + '@'+@ColumnName +' '+ @DataType +CASE WHEN @CharacterLen IS NOT NULL THEN '('+@CharacterLen+')' ELSE '' END + ','
END
SELECT @DeclareCol2 = CASE WHEN @IdentityColumn = @ColumnName
THEN @DeclareCol2
ELSE @DeclareCol2 + '@'+@ColumnName + ','
END
SELECT @DeclareCol3 = CASE WHEN @IdentityColumn = @ColumnName
THEN @DeclareCol3
Our tables are designed with an identity field at the end and since the variables are set with '' when it finds the identity field it doesn't work. The variable has to be reassigned to itself.