SDO_DAS_Relational::executeQuery

(^)

SDO_DAS_Relational::executeQuery Ejecutar una consulta SQL dada en una base de datos relacional y devolver los resultados como un grafo de datos normalizado

Descripción

SDO_DAS_Relational::executeQuery ( PDO $database_handle , string $SQL_statement [, array $column_specifier ] ) : SDODataObject
Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Ejecuta una consulta dada en una base de datos relacional, utilizando el gestor de bases de datos PDO proporcionado. Usa el modelo que construye desde los metadatos para interpretar el conjunto de resultados. Devuelve un grafo de datos.

Parámetros

PDO_database_handle

Construido utilizando la extensión PDO. Una línea típica para construir un gestor de bases de datos PDO puede ser así:

$dbh = new PDO("mysql:dbname=COMPANYDB;host=localhost",DATABASE_USER,DATABASE_PASSWORD);

SQL_statement

La sentencia SQL a ejecutar en la base de datos.

column_specifier

El DAS Relacional para examinar el conjunto de resultados y para cada columna, conocer de qué tabla y de qué columna de esa tabla proviene. En algunas circunstancias puede encontrar esta información por sí mismo, pero en otras no puede. En estos casos es necesario una especificador de columna, el cual es un array que identifica las columnas. Cada entrada del array es simplemente una cadena en la forma nombre-tabla.nombre_columna.

El especificador de columna es necesario cuando existen nombre de columnas duplicados en los metadatos de la base de datos. Por ejemplo, en la base de datos usada en los ejemplos, todas las tablas tienen una columna id y una name. Cuando el DAS Relacional recupera el conjunto de resultados desde PDO, éste puede hacerlo con el atributo PDO_FETCH_ASSOC, lo que causará que las columnas del conjunto de resultados sean etiquetadas con el nombre de columna, pero no distinguitá duplicados. Por lo tanto, esto solamente funcionará cuando no haya posibles duplicados en el conjunto de resultados.

Para resumir, se ha de especificar un especificador de columna siempre que exista cualquier duda sobre cuales columnas pertenecen a cual tabla y solamente omitirlo cuando cada nombre de columna de los metadatos de la base de datos sea único.

Todos los ejemplo en la sección Ejemplos usan un especificador de columna. Existe un ejemplo en el directorio Escenarios de la instalación que no lo hace: aquél que trabajo simplemente con la tabla empleado, y ya que trabaja con sólo una tabla, no pueden existir nombres de columnas duplicados.

Valores devueltos

Devuelve un grafo de datos. Especialmente, devuelve un objeto raíz de un tipo especial. Bajo este objeto raíz estarán los datos del conjunto de resultados. El objeto raíz tendrá una propiedad de contención polievaluada con el mismo nombre que el tipo raíz de la aplicación especificado en el constructor, y esa propiedad contendrá uno o más objetos de datos del tipo raíz de la aplicación.

En el caso en que la consulta no devuelva datos, aún se devolverá el objeto raíz especial pero la propiedad de contención del tipo raíz de la aplicación estará vacía.

Errores/Excepciones

SDO_DAS_Relational::executeQuery() puede lanzar una excepción SDO_DAS_Relational_Exception si no es capaz de construir el grafo de datos correctamente. Esto puede suceder por varias razones: por ejemplo, si encuentra que no tiene claves primarias en el conjunto de resultados para todos los objetos. También atrapa cualquer excepción de PDO y obtiene información de diagnóstico de PDO, la cual incluye en una excepción SDO_DAS_Relational_Exception que entoces lanza.

Ejemplos

Véase la sección Ejemplos de la información general sobre el DAS Relacional para muchos ejemplos de invocar a este método.