Wenn es ein Upgradeskript ist, solltest Du auch bedenken, dass es idempotent sein sollte, sprich, das ALTER script sollte mehrfach ausführbar sein, daher ist es wichtig die Vorbedigung zu beobachten:

--CREATE TABLE SomeTable
--(A DECIMAL(18,0))

--GO

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SomeTable' AND COLUMN_NAME = 'A' DATA_TYPE = 'DECIMAL' AND NUMERIC_PRECISION = 18 AND NUMERIC_SCALE = 0)
BEGIN
 ALTER TABLE SomeTable
 ALTER COLUMN A DECIMAL(18,2)
END

...zur Antwort

Wenn es ein Upgradeskript ist, solltest Du auch bedenken, dass es idempotent sein sollte, sprich, das ALTER script sollte mehrfach ausführbar sein, daher ist es wichtig die Vorbedigung zu beobachten:

--CREATE TABLE SomeTable
--(A DECIMAL(18,0))

--GO

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SomeTable' AND COLUMN_NAME = 'A' DATA_TYPE = 'DECIMAL' AND NUMERIC_PRECISION = 18 AND NUMERIC_SCALE = 0)
BEGIN
 ALTER TABLE SomeTable
 ALTER COLUMN A DECIMAL(18,2)
END

...zur Antwort

Wenn es ein Upgradeskript ist, solltest Du auch bedenken, dass es idempotent sein sollte, sprich, das ALTER script sollte mehrfach ausführbar sein, daher ist es wichtig die Vorbedigung zu beobachten: --CREATE TABLE SomeTable --(A DECIMAL(18,0)) --GO IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SomeTable' AND COLUMN_NAME = 'A' DATA_TYPE = 'DECIMAL' AND NUMERIC_PRECISION = 18 AND NUMERIC_SCALE = 0) BEGIN ALTER TABLE SomeTable ALTER COLUMN A DECIMAL(18,2) END

...zur Antwort