No es un bug, es una característica no documentada

lunes, 9 de marzo de 2015

Bases de datos. SQL programado (III)

9:29 Posted by Inazio , No comments
Sentencias preparadas.

"¿Esto que es? Pues dejar esta sentencia ya preparada"
Servirá para que, estando ya preparada, cargue mucho más rápido las consultas, y evitar las inyecciones de SQL, ya que las instrucciones preparadas antes de trabajar con el dato introducido por el usuario, comprueban tipos.

Para preparar una consulta, la sintaxis sería

PREPARE alumnosInsertDinamic FROM “INSERT INTO alumnos VALUES (?,?)”;

Los interrogantes son porque esta inserción contendrá dos datos. Y la ejecutamos pasandole las variables con los datos a almacenar

EXECUTE alumnosInsertDinamic USING @id, @nombre;

Y una vez que ya no se usa, se elimina de memoria con la siguiente instrucción:

DEALLOCATE PREPARE alumnosInsertDinamic;

Los procedimientos en sí ya están preparados, entonces, ¿por qué sigo utilizando sentencias preparadas en procedimientos, que ya lo están? Para realizar SQL dinámico

SQL dinámico

Es una instrucción que se ejecuta en tiempo de ejecución, al contrario que las estáticas que se hacen en tiempo de compilación.

Un ejemplo por ejemplo sería


Esto es un muy mal ejemplo, porque haciendo

call sqlDinamico('delete from alumnos where id >= 1000');

Te acaban de pulir, si existen los permisos adecuados, los alumnos con id mayor o igual a 1000. ¿Menuda putada, eh?

0 comentarios:

Publicar un comentario