Estoy tratando de lograr algo similar a un para cada uno, donde me gustaría tomar los ID de una declaración de selección devuelta y usar cada uno de ellos.
DECLARE @i int
DECLARE @PractitionerId int
DECLARE @numrows int
DECLARE @Practitioner TABLE (
idx smallint Primary Key IDENTITY(1,1)
, PractitionerId int
)
INSERT @Practitioner
SELECT distinct PractitionerId FROM Practitioner
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM Practitioner)
IF @numrows > 0
WHILE (@i <= (SELECT MAX(idx) FROM Practitioner))
BEGIN
SET @PractitionerId = (SELECT PractitionerId FROM @Practitioner WHERE idx = @i)
--Do something with Id here
PRINT @PractitionerId
SET @i = @i + 1
END
Por el momento tengo algo parecido a lo anterior, pero recibo el error:
Nombre de columna no válido 'idx'.
Alguien podria
idx
está en @Practitioner
no Practitioner
. La mayoría de las veces, existen alternativas superiores basadas en conjuntos para un enfoque para cada uno; si muestra lo que hace con el valor de la fila, tal vez se le pueda sugerir una alternativa.
--Do something with Id here
es, es probable que podamos mostrarle cómo resolver este problema sin ningún bucle o cursores. En la mayoría de los casos, desea utilizar una solución basada en conjuntos, ya que así es como SQL Server está optimizado para funcionar. Recorrer y tratar una fila a la vez ciertamente tiene su lugar, pero sospecho que no es así.