OPEN (Transact-SQL)

Abre un cursor del servidor Transact-SQL y lo llena ejecutando la instrucción Transact-SQL especificada en la instrucción DECLARE CURSOR o SET cursor_variable.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL


OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

GLOBAL

Especifica que cursor_name hace referencia a un cursor global.

cursor_name

Es el nombre de un cursor declarado. Si existe un cursor global y uno local con el nombre cursor_name, cursor_name hace referencia al cursor global si se especifica GLOBAL; en caso contrario, cursor_name hace referencia al cursor local.

cursor_variable_name

Es el nombre de la variable cursor que hace referencia a un cursor.

Si se declara el cursor con la opción INSENSITIVE o STATIC, OPEN crea una tabla temporal para mantener el conjunto de resultados. OPEN produce un error si el tamaño de cualquier fila en el conjunto de resultados excede el tamaño máximo de fila para las tablas de SQL Server. Si el cursor se declara con la opción KEYSET, OPEN crea una tabla temporal para mantener el conjunto de claves. Las tablas temporales se almacenan en tempdb.

Después de abrir un cursor, utilice la función @@CURSOR_ROWS para recuperar el número de filas habilitadas en el último cursor abierto.

NotaNota

SQL Server no admite la generación asincrónica de cursores Transact-SQL controlados por conjunto de claves o estáticos. Las operaciones de cursor de Transact-SQL, como OPEN o FETCH, se realizan por lotes, por lo que no es necesaria la generación asincrónica de cursores Transact-SQL. SQL Server mantiene la compatibilidad con los cursores de servidor de interfaz de programación de aplicaciones (API) controlados por conjunto de claves o estáticos, donde OPEN de latencia baja representa un problema debido a los ciclos de ida y vuelta del cliente en cada operación de cursor.

Este ejemplo abre un cursor y busca todas sus filas.

DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2008R2.HumanResources.vEmployee
WHERE LastName like 'B%';

OPEN Employee_Cursor;

FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
    FETCH NEXT FROM Employee_Cursor
END;

CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;

Adiciones de comunidad

AGREGAR
Mostrar: