¿Qué es un Cursor?
Un cursor consiste en cargar un conjunto de datos en la memoria RAM, y luego recorrerlo o navegar a través de el mediante un puntero.
En cuanto al rendimiento, ¿Son los Cursores eficientes?
Las soluciones basadas en cursores son menos eficientes que las que se basan en conjunto de datos, ya que SQL está preparado para trabajar con el conjunto de datos y con los cursores lo que estamos haciendo es recorrer los registros uno a uno de forma secuencial. Por este motivo los cursores se deben usar con precaución.
¿Cuáles son los ámbitos o alcance de declaración de un cursor?
El ámbito de aplicación o el alcance de un cursor puede global o local
¿Qué significa que el alcance de un cursor sea Global?
Especifica que el cursor estará disponible de manera global para la conexión actual.
¿Qué significa que el alcance de un cursor sea Local?
Esto quiere decir que el cursor solo estará disponible para el procedimiento almacenado, disparador, o consulta que contiene dicho cursor.
¿Qué significa la forma de recuperación forward_only?
Significa que sólo se puede avanzar o desplazar desde la primera hasta la última fila, es decir no se puede retroceder.
¿En un Cursor, qué significa la forma de recuperación scroll?
Significa que nos podemos mover de distinta forma por el cursor, específicamente tenemos las siguientes opciones para recuperar los datos:
¿Cuáles son los tipos de cursores que se pueden declarar, y explique su significado?
Se pueden declarar cuatro tipos de cursores:
¿Enumera y explique los tipos de bloqueos de un cursor?
Un cursor puede tener los siguientes tipos de bloqueos contra las filas
¿Qué son los bloqueos?
Un bloqueo es un proceso por el cual un sistema gestor de bases de datos restringe el acceso a una fila en un entorno multiusuario. Cuando una fila o columna se bloquea exclusivamente, otros usuarios no pueden acceder a los datos bloqueados hasta que se libere el bloqueo. Se utiliza para la integridad de los datos.
¿Cuál es la sintaxis de declaración de un cursor?
Declare CURSOR [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [STATIC | KEYSET | DYNBAMIC | FAST_FORWARD] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] [TYPE_WARNING] for [FOR UPDATE [OF [,... N]]][;]
Enumere los pasos que hay que realizar para usar un cursor
¿Cuál es la variable del sistema que nos indica si un puntero está apuntando a un registro de un cursor?
@@FETCH_STATUS=0
Con esta variable, si vale cero sabemos que el puntero está apuntando a un registro del cursor, se usa para las iteraciones de un while.
¿Qué es una variable de Tabla?
Es una variable de SQL que almacena datos en forma tabla temporal. Las variables de tabla residen en la base de datos tempDB de forma muy similar a las tablas temporales de SQL Server locales.
Las variables de tabla solo son accesibles dentro de la sesión que las creo, no obstante solo se puede tratar de acceder a la variable de tabla dentro del lote actual, no son visibles fiera del lote, lo que significa que el concepto de jerarquía de sesión puede ignorarse de alguna manera.
Respecto al rendimiento, ¿Cómo funcionan las variables de tabla respecto a las tablas temporales?
Una variable de tabla es optima cuando se van a tratar pequeñas cantidades de datos, de lo contrario es más útil usar tablas temporales
Que se debe tener en cuenta de las variables de tabla respecto a las transacciones
. Si un desarrollador revierte una transacción que incluye cambios en las variables de la tabla, los cambios realizados en las variables de la tabla dentro de esta transacción en particular permanecerán intactos. Esto quiere decir, otras partes de esta transacción en cuestión se revertirán, pero cualquier cosa que haga referencia a la variable de la tabla no lo hará, a menos que esa parte de su script tenga un error.
Ejemplo de declaración una variable de tabla
DECLARE @TotalProduct AS TABLE
(ProductID INT NOT NULL PRIMARY KEY,
Quantity INT NOT NULL)
INSERT INTO @TotalProduct
( [ProductID], [Quantity] )
SELECT
A.[ProductID],
[Quantity] = SUM(B.Quantity)
FROM dbo.Product AS A
INNER JOIN dbo.SalesDetails AS B ON A.ProducitID = B.ProductID¿Cómo se declara y usa una tabla temporal local?
CREATE table #tempLead (TIPO_DOCUMENTO_ varchar (100) not null)
INSERT INTO #tempLead (TIPO_DOCUMENTO_) values (@documentoTipo)
SELECT * FROM #tempLead
¿Qué es una tabla temporal locales?
Una tabla temporal local sólo es visible para la sesición actual. No pueden ser vistas ni utilizadaspor procesos o consultas fuera de la sesión en la que esta se declara.
Las tablas tenporales locales se crean en la base de dtaos tempdb.
Las tablas temporales locales, se crear usando el “hastag” seguido del nombre la tabla, #.