Te sugerimos que revises esta solución en un ambiente controlado antes de enviarlo a producción, un saludo.
Solución:
Cámbielo a una función con valores de tabla
Por favor, consulte el siguiente enlace, por ejemplo.
Otra opción sería usar un procedimiento con parámetros de salida – Uso de un procedimiento almacenado con parámetros de salida
Erland Sommarskog tiene una publicación exhaustiva sobre el paso de datos en SQL Server que se encuentra aquí:
http://www.sommarskog.se/share_data.html
Cubre SQL Server 2000, 2005 y 2008, y probablemente debería leerse en detalle ya que hay una amplia cobertura de las ventajas y desventajas de cada método. Sin embargo, estos son los aspectos más destacados del artículo (congelados en el tiempo a partir de julio de 2015) con el fin de proporcionar términos de búsqueda que se pueden usar para buscar más detalles:
Este artículo aborda dos cuestiones relacionadas:
- ¿Cómo puedo usar el conjunto de resultados de un procedimiento almacenado en otro, también expresado como ¿Cómo puedo usar el conjunto de resultados de un procedimiento almacenado?
procedimiento en una instrucción SELECT?- ¿Cómo puedo pasar los datos de una tabla en un parámetro de un procedimiento almacenado a otro?
Parámetros de SALIDA
- Generalmente no es aplicable, pero a veces se pasa por alto.
Funciones con valores de tabla
- Suele ser la mejor opción solo para salida, pero existen varias restricciones.
- Ejemplos:
- Funciones en línea: use esto para reutilizar un solo SELECT.
- Funciones de instrucciones múltiples: cuando necesita encapsular una lógica más compleja.
Usar una tabla
- La solución más general. Mi elección favorita para escenarios de entrada/salida.
- Ejemplos:
- Compartir una tabla temporal: principalmente para un solo par de llamador/llamado.
- Tabla con clave de proceso: la mejor opción para muchas personas que llaman al mismo destinatario.
- Tablas temporales globales: una variación de claves de proceso.
Parámetros con valores de tabla
- Req. Versión: SQL 2008
- Principalmente útil al pasar datos de un cliente.
INSERTAR-EJEC
- Engañosamente atractivo, pero debe usarse con moderación.
Uso de CLR
- Req. Versión: SQL 2005
- Complejo, pero útil como último recurso cuando INSERT-EXEC no funciona.
CONSULTA ABIERTA
- Difícil con muchas trampas. Desanimado.
Usando XML
- Req. Versión: SQL 2005
- Un poco chapucero, pero no sin ventajas.
Uso de variables de cursor
- No recomendable.