Procedimiento almacenado

Post date: Apr 7, 2012 10:19:50 AM

Un procedimiento almacenado es un procedimiento que se define usando un lenguaje de programación soportado por un manejador de bases de datos y que reside junto con los datos en una base de datos.

Desde el punto de vista de seguridad, usar procedimientos almacenados en lugar de consultas generadas dinámicamente permite proteger a los programas que las utilizan contra ataques del tipo inyección SQL (a condición que en su implementación, el procedimiento no genere dinámicamente consultas SQL).

Ejemplo: llamada a un procedimiento almacenado desde Java.

String cliente = request.getParameter("nombreCliente"); // Debería ser desinfectado try { CallableStatement cs = connection.prepareCall("{call sp_getBalanceCuenta(?)}"); cs.setString(1, cliente); ResultSet resultados = cs.executeQuery(); // … Manejo del resultado } catch (SQLException se) { // … Manejo de un error de acceso }

El mismo ejemplo en Visual Basic se escribe de la siguiente manera.

Try Dim comando As SqlCommand = new SqlCommand("sp_getBalanceCuenta", conexion) comando.CommandType = CommandType.StoredProcedure comando.Parameters.Add(new SqlParameter("@nombreCliente", cliente.Text)) Dim resultados As SqlDataReader = command.ExecuteReader() ‘ … Manejo del resultado Catch se As SqlException ‘ Manejo de un error de acceso End Try

Un beneficio adicional de los procedimientos almacenados es que al usarlos sistemáticamente, se elimina la necesidad de construir dinámicamente consultas y la base de datos puede ser configurada para no aceptar consultas dinámicas que provienen del usuario de base de datos con el que la aplicación se conecta.

Además, los procedimientos almacenados tienden a ejecutarse más rápidamente que las consultas y pueden ser compartidas entre múltiples llamadas de un mismo programa y entre múltiples aplicaciones que trabajan con una misma base de datos.

Enlaces relacionados

Cursos relacionados