Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/05/2005, 09:49
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En PHP .. "nativamente" este dispone de sus própias funciones para acceder a cada tipo de BD que soporta ..

Me refiero a las funciones (derivadas de la instalación de la extensión correspondiente):

Mysql
www.php.net/mysql

PostgreSQL
www.php.net/pg

Oracle
www.php.net/oracle

Etc ...

OK? .. Ahora .. tu necesitas y usas (cuando hablas de PEAR, ADOdb ...) "capas de abstracción de BD" .. Estas "implementaciones" tienen -sus- própios métodos para ejecutar "consultas SQL" .. lo mismo que las funciones nativas de PHP tienen sus tipicos: mysql_query() .. pg_query() .. etc ...

OK? ... Pero .. un "procedimiento almacenado" (store procedure) .. es una "sentencia SQL" -própia- de cada RDBMS que uses .. Así que su "sintax" SQL de uso .. o incluso si esta lo soporta .. dependerá de su SQL particular.

Por ejemplo .. .Mysql versiones inferiores a la versión 5.x NO soportan de ninguna forma "store procedures" .. Y para la versión 5.x en adelante .. su tratamiento puede no ser igual a lo que tal vez usas para SQL de Oracle. (la versión Mysql 5.x todavía está en fase de desarrollo: Beta a día de hoy)

Así que PHP .. ya cumple su "parte" de su trabajo con darte la función (o si usas una capa de abstración: el método de esa) para "mandar a ejecutar comando SQL" y tomar el resultado que este devuelva. Pero el "comando SQL" que le envies .. dependerá del RDMS que uses.

Tal vez alguna campa de abastracción tipo AdoDB implemente algún método "transparente" para ejecutar Procedimientos almacenados y que internamente haga la conversión de sintax SQL otratamiento de esta para que a cada RDMS que maneje le envie la sentencia SQL que corresponda. (esto por ejemplo parece que lo hace AdoDB par entregar datos "paginados" .. pues por ejemplo Mysql lo maneja como "LIMIT" .. PostgreSQL lo hace con el mismo comando SQL pero invertido el orden de los parámetros .. MS SQL Server usa "TOP" .. y el resto no sé como lo hará. El caso es que dispones de un método tipo "$adodb->dame_datos_paginado($sql,"tantos por página")" y el hace la conversión de sintax SQL.

Un saludo,

PD: si algo de esto "ya lo sabias" .. disculpa .. pero hasta que no se -concreta- lo que uno sabe y la situación hemos de suponer todo.