Académique Documents
Professionnel Documents
Culture Documents
CURSORES
Con el siguiente cdigo lo que hacemos ser crear la tabla temporal, donde vamos a trabajar
y van a actuar los ejemplos.
use tempdb
GO
IF OBJECT_ID('tempdb..CursorTest','u') IS NOT NULL
DROP TABLE CursorTest
GO
CREATE TABLE CursorTest
(
idcol INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
fld1 INT,
fld2 INT,
fld3 CHAR(800)
)
GO
SET NOCOUNT ON
DECLARE @x INT = 10000
WHILE @x > 0
BEGIN
INSERT INTO CursorTest (fld1, fld2, fld3)
SELECT 1, RAND() * 100 * DATEPART(ms, GETDATE()), LEFT(REPLICATE(CAST(NEWID() AS VARCHAR(36)),30),800)
SET @x -= 1
END
Como vemos se ejecuta perfectamente y se crea la tabla con las caractersticas indicadas.
ORDER BY idcol
SET @Rows = @@ROWCOUNT
PRINT CAST(@IdCol AS VARCHAR(5))
SET @IdCol += 1
END
Cuando elegimos un plan una de las primeras cosas que debemos tener en cuenta para
escogerlo es la estimacin de costes. Estos costes dependen de muchos aspectos tales como:
el n de operaciones de entrada/salida del disco requeridas, la utilizacin de la CPU. Una
consulta suele implicar la generacin de resultados intermedios, estos resultados estarn
directamente relacionados con el nmero de E/S.
CURSOR FAST_FORWARD
BUCLE WHILE