As precision is part of data type, when defined, so possibly it would be hard to do that as a batch. But still you can do it through cursor and dynamic query.
DECLARE @Str VARCHAR(500)
SELECT @Str = 'SELECT CAST(COL1 AS DECIMAL (18,'+CAST (@COL3 AS VARCHAR(10))+')) AS COL1, CAST(COL2 AS DECIMAL (18,'+CAST(@COL3 AS VARCHAR(10))+')) AS COL2 FROM #Test' EXEC (@Str)