sql >> Database teknologi >  >> RDS >> Sqlserver

Definer trinene for SQL Server Cursor - SQL Server / TSQL Tutorial

Markører er objekter, som vi giver os i SQL Server til at udføre række-for-række-operation.

Her er trinene, hvordan du skriver en markør

1-Erklærer en markør ved at ved hjælp af navnet på markøren med en Select-sætning
2- Åbn markøren for at udfylde med output fra Select-sætningen
3- Hent rækkerne for at behandle dem én efter én
4- Luk markøren
5- De-allokér markør

Vi støder på forskellige situationer, hvor vi kan bruge markører. Nedenfor er nogle eksempler, hvor vi kan bruge markører

Eksempler:
1-- Dræb alle forbindelser fra en SQL Server-database
2-- Tilføj en ny kolonne såsom CreatedBy til alle tabellerne i en database
3--Aktiver/deaktiver alle triggere i en SQL Server-database
4--Generer scripts/Tag backup af alle databaser på SQL Server én efter én
5 --Truncate/Delete alle tabellerne fra en SQL Server-database


Eksempelkode:
Nedenstående kode kan bruges til at dræbe alle processerne til en database. Vi kan ikke omdøbe en database, hvis en proces har adgang til databasen. For at omdøbe skal vi dræbe alle processerne, før vi omdøber databasen i SQL Server.

USE MASTER
GO
DECLARE @DatabaseName AS VARCHAR(500)
-->Provide the DataBaseName for which want to Kill all processes.
SET @DatabaseName='TestDB'
DECLARE @Spid INT

--1: Declare Cursor:
DECLARE KillProcessCur CURSOR FOR
  SELECT spid
  FROM   sys.sysprocesses
  WHERE  DB_NAME(dbid) = @DatabaseName

--2: OPEN Cursor
OPEN KillProcessCur

--3: Fetch A record
FETCH Next FROM KillProcessCur INTO @Spid

--Loop Through the Rows one by one
WHILE @@FETCH_STATUS = 0
  BEGIN
      DECLARE @SQL VARCHAR(500)=NULL
      SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5))

      PRint @SQL
     
      EXEC (@SQL)
      PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5))
            + ' killed successfull'
      FETCH Next FROM KillProcessCur INTO @Spid
  END

--4: Close the Cursor
CLOSE KillProcessCur
--5: Deallocate Cursor
DEALLOCATE KillProcessCur
 
 
 
 
  1. Hvordan kan jeg matche de sidste to ord i en sætning i PostgreSQL?

  2. Hvad kan få en Oracle ROWID til at ændre sig?

  3. Streaming af databaserede billeder ved hjælp af HttpHandler

  4. Hvordan ved man, hvilken partition der vil blive brugt i Postgres hash partitionering?