sql >> Databáze >  >> RDS >> Sqlserver

TSQL – Přidat sloupec do všech tabulek v databázi [Příklad kurzoru]

Scénář:

Někdy máme požadavek přidat sloupec do všech tabulek v databázi. Dnes musíme přidat do všech tabulek sloupec CreatedOn, pokud v tabulce již neexistuje.

Řešení:

K provedení této operace použijeme kurzor.
Uveďte prosím název sloupce a typ dat pro tyto proměnné. V níže uvedeném příkladu přidávám sloupec CreatedOn s datovým typem DateTime.

SET @COLUMN_NAME='ColumnNameYouWantToAdd'
SET @COLUMN_DATATYPE='DataTypeOfColumn'

---------------------------------------------- --Kód----------------------------------------------- ----
USE TESTDB
GO
--Declare Variables
DECLARE @TableName VARCHAR(100)
DECLARE @TableSchema VARCHAR(100)
DECLARE @COLUMN_NAME VARCHAR(50)
SET @COLUMN_NAME='CreatedOn' -- Change Column Name according to your requirement
DECLARE @COLUMN_DATATYPE VARCHAR(50)
SET @COLUMN_DATATYPE='DateTime' -- Provide data type for column

--Declare Cursor
DECLARE CUR CURSOR FOR
  SELECT TABLE_SCHEMA,
         TABLE_NAME
  FROM   INFORMATION_SCHEMA.TABLES
  WHERE  TABLE_TYPE = 'BASE TABLE'
--OPEN CURSOR
OPEN CUR
--Fetch First Row
FETCH NEXT FROM CUR INTO @TableSchema,@TableName
--Loop
WHILE @@FETCH_STATUS = 0
  BEGIN

  DECLARE @SQL NVARCHAR(MAX)
  SET @SQL=NULL
  IF NOT EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE TABLE_NAME=@TableName AND COLUMN_NAME=@COLUMN_NAME 
and Table_Schema=@TableSchema)
  BEGIN
  SET @SQL='ALTER TABLE '+@TableSchema+'.'+@TableName +' ADD '+@COLUMN_NAME
                         + ' '+@COLUMN_DATATYPE
    PRINT @SQL
    EXEC ( @SQL)
  END
   
  IF EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE TABLE_NAME=@TableName AND COLUMN_NAME=@COLUMN_NAME 
and Table_Schema=@TableSchema)
  BEGIN
  PRINT 'Column Already exists in Table'
  END
      FETCH NEXT FROM CUR INTO @TableSchema,@TableName
  END
--Close and Deallocate Cursor
CLOSE CUR
DEALLOCATE CUR
 
 
 
Video Demo: How to Add Column to all the Tables in SQL Server Database (Cursor Example)
 
 

  1. SQLite COUNT

  2. 5 Microsoft Access Tipy a triky

  3. Jak deklarovat uživatelsky definovat výjimku pomocí PRAGMA EXCEPTION_INIT

  4. Zpracování velkých objemů dat pomocí MySQL a MariaDB