Monday, October 21, 2019

How to change the table name dynamically in MSSQL Server

use TestingDB
go
SET NOCOUNT ON
DECLARE @cnt INT
DECLARE @table VARCHAR(128)
DECLARE @schema VARCHAR(100)
DECLARE @cmd VARCHAR(500)


IF OBJECT_ID('tempdb..#LISTOFTABLES') IS NOT NULL
BEGIN
    DROP TABLE #LISTOFTABLES
END
SELECT TABLE_SCHEMA,TABLE_NAME INTO #LISTOFTABLES
FROM INFORMATION_SCHEMA.TABLES
where table_type='BASE TABLE'

DECLARE tables CURSOR FOR
SELECT * FROM #LISTOFTABLES

OPEN tables
FETCH NEXT FROM tables INTO @schema, @table
WHILE @@fetch_status = 0
BEGIN
IF (OBJECT_ID(@schema+'.'+@table) IS NOT NULL)
BEGIN
SET @cmd = 'sp_rename '''+@table+''', ''NEW_'+@table +'''' --- PROBLEM IS HERE I GUESS
EXEC(@cmd)
PRINT @cmd
END
 FETCH NEXT FROM tables INTO @schema, @table
END
CLOSE tables
DEALLOCATE tables


Syntax :
The script for renaming any column :
sp_RENAME 'TableName.[OldColumnName]' '[NewColumnName]''COLUMN'
 The script for renaming any object (table, sp etc) :
sp_RENAME '[OldTableName]' '[NewTableName]'

No comments:

Post a Comment