Considere el cuadro de muestra:iterar a través de filas en SQL Server 2008
id integer
name nvarchar(10)
No es un procedimiento almacenado llamado myproc
. Sólo se necesita una parámetro de (que es id)
Dado un nombre como parámetro, encontrar todas las filas con el name = @nameparameter
y pasar todos esos ids a myproc
por ejemplo:
sample->
1 mark
2 mark
3 stu
41 mark
Cuando mark
es pasado, 1 ,2 and 41
se pasan a myproc
individualmente.
es decir, el siguiente debería ocurrir:
execute myproc 1
execute myproc 2
execute myproc 41
no puede tocar ni myproc
ver su contenido. Solo tengo que pasarle los valores.
Aunque esto * se puede * hacer, lo mejor es generalmente evitarlo, generalmente convirtiendo el proceso almacenado en una UDF, o expandiéndolo en línea, para que se pueda realizar una operación basada en el conjunto.Tendríamos que ver las partes internas de 'myproc' para asesorar qué enfoque era factible en este caso. En SQL, debe * generalmente * buscar soluciones basadas en conjuntos para problemas, no basados en bucles. –
Simialr Pregunta aquí respondida http://stackoverflow.com/questions/20662356/sql-server-loop-how-do-i-loop-through-a-set-of-records/34797745#34797745 – Sandeep
@Sandeep, esto es una pregunta anterior y acepté la solución – psy