Los cursores son una estructura prevista en versiones programables de Structured Query Language ( SQL) como Sybase o de Microsoft SQL Server Transact -SQL. Define un cursor para una selección o actualización de SQL en una o más tablas. El cursor tiene un nombre que puede utilizar para hacer referencia a , abrir y cerrar el cursor o captar filas desde el conjunto de cursor. Los cursores se utilizan cuando cada fila del conjunto de las necesidades de procesamiento o de sus valores se utilizan en las variables del programa . Cuando un nuevo cursor se declara en el bucle que procesa cada fila de un cursor, el nuevo cursor interno se desliza por el interior del viejo cursor exterior . Instrucciones
1
Declarar un cursor para una sentencia SELECT simple con la siguiente sintaxis T -SQL :
DECLARE CURSOR
PARA SELECT campo1 , campo2 , field3
dE
DONDE campo4 < = @ limitval
2
Abra el cursor para el procesamiento de usar este T -SQL sintaxis:
OPEN
3 captar filas desde el cursor abierto para el procesamiento, ya que es una lectura ( select) cursor. Declarar las variables necesarias para almacenar los valores de los campos de la fila actual del cursor. La sintaxis T -SQL para captar filas del cursor es el siguiente :
TRAER DESPUÉS DE EN var_fld1 @ , @ var_fld2 , @ var_fld3
mientras que @ @ fetch_status == 0
comenzar
--- < proceso fila actual del cursor aquí>
TRAER DESPUÉS DE EN var_fld1 @ , @ var_fld2 , @ var_fld3
final
4
Agregar la declaración y ejecución de la segunda o interior cursor en la zona de alcance de bucle del cursor anterior o exterior de la siguiente manera :
- cursor exterior buscar loop
mientras que @ @ fetch_status == 0
comenzar
< proceso actual fila de cursor externa aquí>
- Es hora de declarar el interior del cursor - anidación comienza
DECLARE cURSOR inner_cursor
PARA SELECCIONAR X , Y, Z, ....
FROM tabla1 , tabla2 , ...
DONDE
OPEN inner_cursor
TRAER DESPUÉS DE inner_cursor EN varX @ , @ varían @ Varz ...
mientras que @ @ fetch_status == 0
empezar - cursor interno traiga loop
-
- obtiene la fila siguiente
TRAER DESPUÉS DE inner_cursor EN varX @ , @ varían @ Varz ...
final - cursor interno recoger loop
final - cursor exterior traiga loop
< br >