Aprovecho para hacer una pregunta, buscando informacion sobre este tipo de bases de datos no es la primera vez que oigo eso de procedimiento almacenado, ¿a que se refiere eso? ¿Como es un procedimiento almacenado?
Para facilitar la independencia del código de las aplicaciones y aumentar la velocidad los motores de BBDD implementan un lenguaje específico suyo, por ejemplo en Oracle es PL/SQL, que permite programar directamente en la BBDD ciertas operaciones complejas.
Las ventajas que suelen tener, esque si tienes que pedir 30 datos, realizar operaciones con ellos, y coger el resultado, ganas en rendimiento, porque si simplemente haces la petición a un procedimiento almacenado, se hace de manera local en la BBDD y tú obtienes directamente el resultado. También si accedes desde diversas aplicaciones, tener las funciones creadas en el servidor te permite aislarte de la lógica de la BBDD. Aunque bueno, la desventaja es que si cambias de tipo de BBDD, tendrias que reahacer las funciones, porque los lenguajes no suelen ser demasiado compatibles.
Ejemplo cutre :
programa1
nombre = pedir_nombre(dni); /* lo pedimos a la BBDD con una sentencia SQL, tenemos que saber en que tabla, y que campo se encuentra, SELECT nombre FROM tabla WHERE dni = tal */
programa2
nombre = pedir_nombre(dni); /* Se pide el dni a una función de la BBDD, por ejemplo BBDD_GET_NAME(int dni ), solo tenemos que utilizar ese nombre de función, y se encapsula el resto en el procedimiento */
Es algo sencillo si lo ves, pero explicado quizás resulte un poco lioso,no sé si me habré explicado bien.
Yo aquí te pongo una función, los procedimientos son similares.
Por ejemplo, la función BBDD_GET_NAME nos devolveria el nombre de alguien dando su dni, en PL/SQL ( hecho de memoria y con fallos de sintaxis supongo ) :
CREATE OR REPLACE FUNCTION BBDD_GET_NAME (dni IN NUMBER) RETURN VARCHAR AS
BEGIN
varchar name(30);
IF dni<0 THEN
Return -1;
END IF;
BEGIN
SELECT nombre
INTO name
FROM tabla
WHERE dni = dni
END
return name
END BBDD_GET_NAMEl;
/
Acerca de lo de lo de multimples sentencias, la verdad es que no lo se tendre que investigar un poco mas,
Lo comento, porque en Oracle por ejemplo no se puede, lo cual dificulta mucho el poder alterar los datos, ya que por ejemplo no puedes realizar un UPDATE y un SELECT separados por ; a través del string ODBC.
También tendrás que tener en cuenta, que quizás el usuario de la BBDD con la que se ejecute esa sentencia no tenga privilegios suficientes para alterar la tabla.
Un Saludo,