Cursores SQL | TIEngranaje

¿Eres un profesional en base de datos y quieres mejorar tus habilidades en SQL? ¡Entonces no te pierdas nuestro artículo sobre Cursores SQL! En TIEngranaje, te traemos una guía completa para que puedas entender y utilizar los cursores de SQL de manera efectiva en tus proyectos. Aprende a manipular datos de manera más eficiente, optimizando tus consultas y mejorando el rendimiento de tus aplicaciones. ¡No te lo pierdas!

Los cursores de Transact-SQL se utilizan principalmente en procedimientos almacenados, desencadenadores y scripts de Transact-SQL. Cursores hacer que el contenido de un conjunto de resultados esté disponible para otras instrucciones Transact-SQL.

El proceso típico para usar un Cursor Transact-SQL en un procedimiento almacenado o activador es el siguiente:

  1. Declarar variables Transact-SQL para contener los datos devueltos por el cursor.
  2. Asociar un cursor Transact-SQL con un SELECT declaración usando el DECLARE CURSOR declaración.
  3. Utilizar el OPEN declaración para ejecutar el SELECT declaración y poblar el cursor.
  4. Utilizar el FETCH INTO declaración a obtener filas individuales y hacer que los datos de cada columna se muevan a una variable específica.
  5. Cuando estás finalizado con el cursor, utilice el CLOSE declaración. Puede volver a abrirlo si es necesario.
  6. El DEALLOCATE declaración completamente libera todos los recursos asignado al cursor, incluido el nombre del cursor.

Sintaxis

DECLARE @variable1 dataType, @variable2 dataType 
DECLARE cursorName CURSOR FOR
SELECT statement...

OPEN cursorName

FETCH NEXT FROM cursorName
INTO @variable1, @variable2

WHILE @@FETCH_STATUS = 0
BEGIN

Do stuff with @variable1 and @variable2 such as PRINT,
create a message, INSERT INTO, UPDATE, etc...

FETCH NEXT FROM cursorName
INTO @variable1, @variable2
END
CLOSE cursorName
DEALLOCATE cursorName

Ejemplo

declare @product varchar(255)
declare @quantity integer 

DECLARE inventory CURSOR FOR
SELECT [Name], [Qty]
FROM myInventory

OPEN inventory

FETCH NEXT FROM inventory
INTO @product, @quantity

WHILE @@FETCH_STATUS = 0
BEGIN

print @product + ', ' + @quantity

FETCH NEXT FROM inventory
INTO @product, @quantity
END
CLOSE inventory
DEALLOCATE inventory

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Deja un comentario