Para hacer un bucle while en SQL Server usaremos un cursor y la orden FETCH
En este ejemplo vamos a sacar un select html desde la tabla de provincias y lo devolvemos
DECLARE @resp varchar(2000)
DECLARE @provincia varchar(50)
DECLARE @CP_PROVINCIA INT
El cursor lo declaramos y le asignamos la consulta de la cual queremos recorrer los registros o valores
DECLARE @cursor cursor
SET @cursor = CURSOR FOR
SELECT nombre_provincia, CP_PROVINCIA
FROM provincias
Abrimos el cursor y con la orden fetch seleccionamos el primer registro para el bucle,
por cada campo de la consulta que queramos usar en el bucle debemos declarar una variable (los hemos señalado en naranja)
OPEN @cursor – Abre cursor
FETCH NEXT FROM @cursor – Primera fila
INTO @provincia , @CP_PROVINCIA
SELECT @resp = ”
Mientras haya registros en el cursor
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @resp = @resp + ‘<option value=’ + cast(@CP_PROVINCIA as varchar(50)) + ‘ >’ + @provincia + ‘</option>’
Para evaluar el siguiente registro volvemos al fecth
FETCH NEXT FROM @cursor INTO @provincia , @CP_PROVINCIA
END
RETURN @resp
Podemos devolver el valor (si es una funcion) , en el caso de un procedimiento dentro del BEGIN podriamos haber realizado cualquier operacion (INSERT, UPDATE, DELETE, SP_ , ETC)