ALTER PROCEDURE [dbo].[SP_Generate_AlterColumn]
AS
BEGIN
DECLARE @PRINT_RESULT VARCHAR(MAX)=''
DECLARE @COLUMN_EXIST VARCHAR(MAX)=''
DECLARE @TABLE_EXIST VARCHAR(MAX)=''
DECLARE db_cursor CURSOR FOR
SELECT OBJECT_NAME(sc.[object_id]),sc.[name] as [column]
FROM [sys].[columns] sc
JOIN [sys].[objects] so
ON sc.[object_id] = so.[object_id]
--WHERE OBJECT_NAME(sc.[object_id])='TABLENAME'
ORDER BY so.modify_date DESC, so.create_date ASC
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @TABLE_EXIST,@COLUMN_EXIST
IF EXISTS
(
SELECT * FROM [sys].[columns] sc
JOIN [sys].[objects] so
ON sc.[object_id] = so.[object_id]
JOIN sys.tables ON sc.object_id = tables.object_id
WHERE OBJECT_NAME(sc.[object_id])= @TABLE_EXIST AND sc.name = @COLUMN_EXIST
)
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
SET @PRINT_RESULT = 'ALTER TABLE ' + @TABLE_EXIST + ' ADD ' + @COLUMN_EXIST + ' '+
(
SELECT temp.system_type_name FROM
(
SELECT * FROM sys.dm_exec_describe_first_result_set
(
'SELECT * FROM ['+ @TABLE_EXIST +'] ', NULL, 0
)
) AS temp WHERE temp.name=@COLUMN_EXIST
)
FETCH NEXT FROM db_cursor INTO @TABLE_EXIST,@COLUMN_EXIST
PRINT @PRINT_RESULT
END
END
CLOSE db_cursor
DEALLOCATE db_cursor
END
No comments:
Post a Comment