Está en la página 1de 4

Cursores:

Es una herramienta que permite almacenar un conjunto de registros provenientes de una consulta Select.

Utilidad :
Se Utiliza Para Recorrer uno por uno la cantidad de registros, Modificar, Actualizar los datos de un conjunto de datos.

Cmo Crear un Cursor?


Sintaxis General: Declare Nom_cur Cursor FOR <Sentencia Select> Ejem: Declare micursor For Select IdClient,Nombre From cliente

Cmo Aperturar Cursor?


Sintaxis General: Open Nom_cur Ejem: open micursor

Cmo recoger un cursor y accesar a los datos?


Sentencia FETCH :esta sentencia toma los datos del registro actual y los copia a variables de memoria. Sintaxis General: FETCH Next from Nom_cursor into var1,var2, Ejem:
Fetch next from micursor into @Id,@Nom Toma el 1 Registro

Sentencia @@FETCH_STATUS : Valor=0 Existe Datos Ejem : While(@@fetch_status=0) Begin Sentencias FETCH next From micursor Into @Id,@Nom End

Cierre del Cursor?


CLOSE Nom_Cur Ejem: Close micursor

Cmo Liberar un Cursor?


DEALLOCATE Nom_cur Ejem: Deallocate micursor
--Generar un Correo Para Todos los Empleados de la Empresa, --Formado Por los 3 primeros digitos del nombre --y los 2 Ultimos del ApPaterno, y los 3 primeros caracteres --del distrito Use BDVentas Go Declare @Ide char(5),@Nom varchar(30),@Apat varchar(30),@dis varchar(30) Declare EmpEmail Cursor For Select IdEmpleado,Nombre,APaterno,Nomdis from Empleado as e inner join Distrito as d on e.IdDis=d.IdDis Open EmpEmail fetch next from EmpEmail Into @Id,@Nom,@Apat while (@@FETCH_STATUS=0) begin update Empleado set Email=LOWER(SUBSTRING(@nom,1,2)+Right(@Apat,2)+SUBSTRING(@dis,1,3)+'@h otmail.com') where IdEmpleado=@Ide Fetch Next from Empemail Into @Ide,@Apat,@dis end Close EmpEmail Deallocate Empemail Go

Copias de Seguridad:
select name from master.dbo.sysDatabases --Ejemplo Realizar una Copia de Seguridad de todas --las B.D que no son del Sistema en la Unidad D:\CopiaSeguridad

*Funcion BackUp: Permite realizar un respaldo de una BD. Sintaxis General


BackUp Database nom_orig IO Disk=Nom_Copia

use BDVentas go declare @nomar varchar(50) Declare @nom Varchar(50) declare @ruta varchar(50) declare @NomFec varchar(20) Declare CopiaSeg Cursor for Select name from master.dbo.sysDatabases where name Not in('model','master','tempbd','msdb') set @ruta='D:\CopiaSeguridad' set @NomFec=CONVERT(varchar(20),getdate(),112) open CopiaSeg Fetch Next from CopiaSeg Into @nom while(@@FETCH_STATUS=0) begin set @nomar=@ruta+@nom+@NomFec+'.BAK' BackUp Database @nom TO Disk =@nomar end close CopiaSeg Deallocate CopiaSeg go

También podría gustarte