Primero que nada- ¡a mi me encantan mucho tales desafios!
El problema es que en el procedimiento comparás entre cada número y su suma de dividores (lo que sirve para encontrar números perfectos), pero no entre números y las sumas de los demás.
Yo intentaría así: inserta a la tabla
todos los números y sus sumas de dividores (sin la condición if @amigo=@i),
y después busca los amigos:
Código SQL:
Ver originalSELECT *
FROM NumAmigos A1
INNER JOIN NumAmigos A2
ON A1.Numero>A2.Numero
AND A1.Numero=A2.Amigo
AND A1.Amigo=A2.Numero;