Principales respuestas
Cuál es la mejor práctica para hacer SP específicos

Pregunta
-
Resulta que tengo que hacer un SP (procedimiento almacenado) que permita ejecutar un proceso para un registro en específico, les pongo de ejemplo un caso, que los empleados que trabajan en el departamento ventas se les incremente el salario en 2%. Entonces más o menos el procedimiento almacenado sería así (asumiendo que no le envío el código del departamento al sp desde la interfaz). Yo lo estoy haciendo así.
inicio sp
@porcentaje decimal
update empleado set salario=salario*(@porcentaje/100) where iddepartamento= 5
fin sp
Pero un amigo me dice que lo más sensato sería hacerlo así ya que estamos trabajando con una base de datos de prueba y no se sabe al final qué codigo tendrá el departamento de ventas.
inicio sp
@porcentaje decimal
update empleado set salario=salario*(@porcentaje/100) where iddepartamento= (select iddepartamento from departamento where nombre='ventas')
fin sp
¿Cuál opción sería la más acertada para el caso en específico que les estoy presentando? Enfóquense solo en las dos opciones que les dí, ya que yo sé que el caso que les estoy poniendo se puede resolver de otra manera, pero lo puse porque no se me ocurre otro ejemplo.
- Editado Juan Carlos Rcf martes, 3 de junio de 2014 16:45
- Cambiado Enrique M. Montejo jueves, 5 de junio de 2014 8:03 Pregunta relacionada con la creación de un procedimiento almacenado.
Respuestas
-
Hola.
Tu procedimiento almacenado deberá tener dos parámetros, el IdDepartamento y el porcentaje. En tu aplicación, tendrás algún mecanismo que le permita al usuario seleccionar el departamento de ventas (por la descripción), pero tú al procedimiento le suministrarás el identificador, no la descripción.
create proc pActualizaSalario @pIdDepartamento int, @pPorcentaje numeric (5,2) as --Incluir validación de parámetros update empleado set salario= salario*@porcentaje/100.0 where IdDepartamento = @pIdDepartamento --Incluir tratamiento de errores, transacciones, etc. return 0
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Propuesto como respuesta Jesús López viernes, 20 de junio de 2014 17:58
- Marcado como respuesta Miguel.Vazquez.MSDNModerator lunes, 23 de junio de 2014 15:18
Todas las respuestas
-
hola
si el id de las tablas es del tipo identity, podrias no saber cual es el id del departamente que se genero, si es asi entonces lo correcto es la segunda opcion
ahora si estas 100% qe el id del departamento es el 5 entonces la primer opcion es valida
la decision de una u otra es si sabes el id correcto del departamente o no
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Hola.
Tu procedimiento almacenado deberá tener dos parámetros, el IdDepartamento y el porcentaje. En tu aplicación, tendrás algún mecanismo que le permita al usuario seleccionar el departamento de ventas (por la descripción), pero tú al procedimiento le suministrarás el identificador, no la descripción.
create proc pActualizaSalario @pIdDepartamento int, @pPorcentaje numeric (5,2) as --Incluir validación de parámetros update empleado set salario= salario*@porcentaje/100.0 where IdDepartamento = @pIdDepartamento --Incluir tratamiento de errores, transacciones, etc. return 0
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Propuesto como respuesta Jesús López viernes, 20 de junio de 2014 17:58
- Marcado como respuesta Miguel.Vazquez.MSDNModerator lunes, 23 de junio de 2014 15:18