Es como preguntar que cuál es la diferencia entre una casa y un perro. No se parecen en nada, aunque pueda darse la circunstancia de que haya un perro dentro de una casa. Al procedimiento y al cursor les pasa lo mismo: puede haber un cursor dentro
de un procedimiento, pero también puede haber procedimientos sin cursores y cursores que no estén en un procedimiento.
El procedimiento almacenado es un contenedor para almacenar líneas de código. Sería el equivalente de una subrutina en un lenguaje de programación convencional.
El cursor es un tipo de variable que se usa para hacer referencia al conjunto de resultados de una Select. Permite ir procesando esos registros uno por uno si se usa dentro de un bucle. En resumidas cuentas, usarás varias sentencias T-SQL para manipular
el cursor. Esas sentencias típicamente se dejan guardadas dentro de un procedimiento almacenado, pero también es lícito enviarlas directamente dentro de un lote, sin usar procedimientos almacenados.