\Conexion_postgres8

Clase que implementa la capa de conexion con la base de datos Postgres.

Summary

Methods
Properties
Constants
obtenerConexion()
estaConectado()
reconectar()
cambiarModoObtencion()
ultimoMensajeError()
obtenerPrimeraFila()
obtenerPrimero()
obtenerTodos()
literalSql()
obtenerListaIndexadaPorClave()
ejecutarConsultaSinMsg()
ejecutarConsulta()
ejecutarConsultaLimitOffsetSinMsg()
ejecutarConsultaLimitOffset()
ejecutarConsultaSeguraLimitOffsetSinMsg()
ejecutarConsultaSeguraLimitOffset()
ejecutarConsultaSeguraSinMsg()
ejecutarConsultaSegura()
ejecutarConsultaActualizacion()
AutoExecute()
cerrar()
finalizarConexion()
metaDatos()
clavesPrimarias()
clavesExtranjeras()
referenciasEntrantes()
estaSiendoReferenciado()
comentarioTabla()
comentariosColumnas()
getSinonimos()
liberar()
puedeSerNulo()
esFecha()
esTimestamp()
esHora()
esEntero()
esDecimal()
esBooleano()
esReadOnly()
esSerial()
tamanoMaximo()
aBooleanTF()
aBoolean()
obtenerResultado()
obtenerFila()
obtenerResultadoCompleto()
cantidadDeFilas()
obtenerImagen()
operadoresBinariosComparacion()
textoOperadorBinarioComparacion()
expresionComparacionBinaria()
expresionComparacionValorEntre()
crearConsulta()
crearConsultaCustom()
crearConsultaGenerica()
getTablas()
getVistas()
qstr()
concat()
sqlstr2php()
setSeguridad()
getSeguridad()
getDBMS()
cambiarPathBusqueda()
restablecerPathBusqueda()
ejecutarStoredProcedure()
siguienteId()
existeFilaCond()
existeFila()
existeProcedure()
prepararConsulta()
blobEncode()
blobDecode()
StartTrans()
CompleteTrans()
FailTrans()
HasFailedTrans()
cambiarParametroConfiguracion()
establecerVariableSesion()
No public properties found
MODO_OBTENCION_NUM
MODO_OBTENCION_ASOC
MODO_OBTENCION_AMBOS
DATATYPE_CHAR
DATATYPE_INT
DATATYPE_NUM
DATATYPE_COUNTER
DATATYPE_DATE
DATATYPE_TIMESTAMP
DATATYPE_LOGIC
DATATYPE_CLOB
DATATYPE_BLOB
BIN_COMP_OP_SW
BIN_COMP_OP_EW
BIN_COMP_OP_CONT
BIN_COMP_OP_EQ
BIN_COMP_OP_NSW
BIN_COMP_OP_NEW
BIN_COMP_OP_NCONT
BIN_COMP_OP_NEQ
BIN_COMP_OP_LT
BIN_COMP_OP_LTE
BIN_COMP_OP_GT
BIN_COMP_OP_GTE
establecerCharset()
prepararSesion()
prepararFechas()
tmpCountQuery()
__construct()
conectar()
consultaParaLog()
errorConsulta()
procesarValorPorDefecto()
metaType()
ajustarMetacolumnas()
puedeSerNuloInterno()
esFechaInterno()
esTimestampInterno()
esHoraInterno()
esEnteroInterno()
esDecimalInterno()
esBooleanoInterno()
esSerialInterno()
tamanoMaximoInt()
tamanoMaximoNum()
realizarEjecucionStoredProcedure()
separarEsquemaTabla()
$_str_dual
$conexion
$dbms
$servidor
$puerto
$servidorypuerto
$base
$usuario
$password
$seguridad
$auditor
N/A
No private methods found
No private properties found
N/A

Constants

MODO_OBTENCION_NUM

MODO_OBTENCION_NUM

Uno de los valores posibles para <var>$modo</var> en {@link cambiarModoObtencion() cambiarModoObtencion()}.

Las columnas se obtienen con índices numéricos.

MODO_OBTENCION_ASOC

MODO_OBTENCION_ASOC

Uno de los valores posibles para <var>$modo</var> en {@link cambiarModoObtencion() cambiarModoObtencion()}.

Las columnas se obtienen en forma asociativa, con el nombre de la columna como clave.

MODO_OBTENCION_AMBOS

MODO_OBTENCION_AMBOS

Uno de los valores posibles para <var>$modo</var> en {@link cambiarModoObtencion() cambiarModoObtencion()}.

Las columnas se obtienen en forma asociativa y con índices numéricos (combina MODO_OBTENCION_NUM y MODO_OBTENCION_ASOC).

DATATYPE_CHAR

DATATYPE_CHAR

Tipo de datos: caracter.

Corresponde a columnas de texto de longitud fija o variable con límite máximo; por ejemplo, varchar o char pero no text o clob.

DATATYPE_INT

DATATYPE_INT

Tipo de datos: número entero.

DATATYPE_NUM

DATATYPE_NUM

Tipo de datos: Número no entero (decimal, numeric, float, real).

DATATYPE_COUNTER

DATATYPE_COUNTER

Tipo de datos: contador o numérico autoincremental.

DATATYPE_DATE

DATATYPE_DATE

Tipo de datos: fecha.

DATATYPE_TIMESTAMP

DATATYPE_TIMESTAMP

Tipo de datos: timestamp.

DATATYPE_LOGIC

DATATYPE_LOGIC

Tipo de datos: boolean o bit-field.

DATATYPE_CLOB

DATATYPE_CLOB

Tipo de datos: CLOB.

DATATYPE_BLOB

DATATYPE_BLOB

Tipo de datos: BLOB.

BIN_COMP_OP_SW

BIN_COMP_OP_SW

BIN_COMP_OP_EW

BIN_COMP_OP_EW

BIN_COMP_OP_CONT

BIN_COMP_OP_CONT

BIN_COMP_OP_EQ

BIN_COMP_OP_EQ

BIN_COMP_OP_NSW

BIN_COMP_OP_NSW

BIN_COMP_OP_NEW

BIN_COMP_OP_NEW

BIN_COMP_OP_NCONT

BIN_COMP_OP_NCONT

BIN_COMP_OP_NEQ

BIN_COMP_OP_NEQ

BIN_COMP_OP_LT

BIN_COMP_OP_LT

BIN_COMP_OP_LTE

BIN_COMP_OP_LTE

BIN_COMP_OP_GT

BIN_COMP_OP_GT

BIN_COMP_OP_GTE

BIN_COMP_OP_GTE

Properties

$_str_dual

$_str_dual : string

Type

string

$conexion

$conexion : \ADOConnection

Type

\ADOConnection

$dbms

$dbms : string

Nombre del DBMS que se usa.

Type

string

$servidor

$servidor : string

Type

string

$puerto

$puerto : integer

Type

integer

$servidorypuerto

$servidorypuerto : string

Type

string

$base

$base : string

Type

string

$usuario

$usuario : string

Type

string

$password

$password : string

Type

string

$auditor

$auditor : \Auditor

Type

\Auditor

Methods

obtenerConexion()

obtenerConexion(\Auditor  $auditor) : \Conexion

Crea un tipo de conexión a la base de datos que depende de la configuración de la aplicación.

Parameters

\Auditor $auditor

Throws

\ExcepcionXGAP

si hay algún error

Returns

\Conexion

estaConectado()

estaConectado() : boolean

Permite comprobar si hay una conexión establecida con la base de datos.

Returns

boolean

reconectar()

reconectar() : boolean

Reestablece la conexión con la base de datos. Si ya está establecida, no tiene efecto.

Returns

boolean —

true si la conexión se realizó correctamente o si ya estaba establecida

cambiarModoObtencion()

cambiarModoObtencion(integer  $modo) : integer

Cambia el modo en que se obtienen los resultados para esta conexión.

No tiene efecto si $modo no tiene un valor válido.

Parameters

integer $modo

una de las constantes MODOOBTENCION*

Returns

integer —

el modo de obtención actual o false si no se hizo el cambio

ultimoMensajeError()

ultimoMensajeError() : string

Devuelve el mensaje de error de la última operación efectuada.

Returns

string

obtenerPrimeraFila()

obtenerPrimeraFila(string  $consulta, boolean  $excepcion = FALSE) : array

Devuelve la primera fila retornada por <var>$consulta</var>.

Parameters

string $consulta
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

array —

un arreglo con una entrada por columna; un arreglo vacío si la consulta no retornó filas

obtenerPrimero()

obtenerPrimero(string  $consulta, boolean  $excepcion = FALSE) : mixed

Devuelve el valor de la primera columna de la primera fila retornada por <var>$consulta</var>.

Parameters

string $consulta
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

mixed —

el valor de la columna; null si la consulta no retornó filas

obtenerTodos()

obtenerTodos(string  $consulta, boolean  $excepcion = FALSE, integer  $numrows = -1, integer  $offset = -1) : array

Ejecuta la consulta <var>$consulta</var> y devuelve un array, con índices numéricos, que contiene todas las filas del resultado.

Parameters

string $consulta
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

integer $numrows

cantidad máxima de filas a retornar

integer $offset

desplazamiento hasta la primera fila

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

array

literalSql()

literalSql(mixed  $valor) : string

Prepara un valor para incluir como literal en una consulta SQL, de acuerdo a su tipo PHP.

Se asume que $valor ya fue correctamente escapado con \qstr() en caso de ser un string.

Por el momento sólo reconoce valores numéricos y strings. Cualquier valor que no sea numérico se interpreta como string.

Ejemplos: $conexion->literalSql(42) === "42"; $conexion->literalSql('abc') === "'abc'"; $conexion->literalSql("'abc'") === "'abc'";

Parameters

mixed $valor

Throws

\InvalidArgumentException

si $valor no es un escalar o null

Returns

string

obtenerListaIndexadaPorClave()

obtenerListaIndexadaPorClave(string  $from, string  $col_clave, string|array  $cols_valores, array  $clausulas_extra = array(), mixed  $excluir = NULL, boolean  $excluir_col_clave_de_valores = TRUE, boolean  $excepcion = FALSE) : array

Obtiene una lista de datos desde la BD y la retorna como un array indexado por los valores de una columna clave.

Asume que los parámetros ya están saneados para evitar inyección de SQL.

Ejemplos. Dada la siguiente tabla tipoferiado:

 ntipoferiado | ctipoferiado |    dtipoferiado    | bhabilitado
--------------+--------------+--------------------+-------------
            1 | FN           | FERIADO NACIONAL   | t
            2 | FP           | FERIADO PROVINCIAL | t
            3 | FM           | FERIADO MUNICIPAL  | t
            4 | P            | PARO               | t
            5 | H            | HUELGA             | t
            6 | O            | OTRO               | f
            7 | A            | ASUETO             | t

$conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ctipoferiado', 'dtipoferiado', array('WHERE' => 'bhabilitado IS TRUE'), null, false, false) == array( 'FN' => 'FERIADO NACIONAL', 'FP' => 'FERIADO PROVINCIAL', 'FM' => 'FERIADO MUNICIPAL', 'P' => 'PARO', 'H' => 'HUELGA', 'A' => 'ASUETO' ); $conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ctipoferiado', 'dtipoferiado', array('WHERE' => 'bhabilitado IS TRUE'), null, false, true) == array( 'FN' => array('ctipoferiado' => 'FN', 'dtipoferiado' => 'FERIADO NACIONAL'), 'FP' => array('ctipoferiado' => 'FP', 'dtipoferiado' => 'FERIADO PROVINCIAL'), 'FM' => array('ctipoferiado' => 'FM', 'dtipoferiado' => 'FERIADO MUNICIPAL'), 'P' => array('ctipoferiado' => 'P', 'dtipoferiado' => 'PARO'), 'H' => array('ctipoferiado' => 'H', 'dtipoferiado' => 'HUELGA'), 'A' => array('ctipoferiado' => 'A', 'dtipoferiado' => 'ASUETO') ); $conexion->obtenerListaIndexadaPorClave('tipoferiado', 'ntipoferiado', array('dtipoferiado', 'bhabilitado'), array(), 6, false, false) == array( 1 => array('ctipoferiado' => 'FN', 'bhabilitado' => 't'), 2 => array('ctipoferiado' => 'FP', 'bhabilitado' => 't'), 3 => array('ctipoferiado' => 'FM', 'bhabilitado' => 't'), 4 => array('ctipoferiado' => 'P', 'bhabilitado' => 't'), 5 => array('ctipoferiado' => 'H', 'bhabilitado' => 't'), 7 => array('ctipoferiado' => 'A', 'bhabilitado' => 't') );

Parameters

string $from

contenido de la cláusula SQL FROM

string $col_clave

nombre de la columa clave, cuyos valores se van a usar para indexar el resultado; puede ser la clave primaria o una clave alternativa, pero debe ser una única columna

string|array $cols_valores

columna (string) o columnas (array) que contiene(n) los valores a retornar por cada fila; si es vacío retorna los valores de todas las columnas

array $clausulas_extra

otras cláusulas SQL a incluir en la consulta; las claves de este array pueden ser: 'WHERE', 'GROUP BY', 'HAVING', 'ORDER BY', 'LIMIT', 'OFFSET'

mixed $excluir

valor o valores de la columna $col_clave a excluir del resultado; se puede pasar como un escalar o como un array

boolean $excluir_col_clave_de_valores

¿la columna clave se debe excluir de las columnas de valores? Si es false, el valor de la columna clave se incluye en el array de valores de cada fila del resultado

boolean $excepcion

tiene el mismo significado que el parámetro $excepcion de {@link Conexion::ejecutarConsulta()}

Returns

array —

resultado[i] == {fila i; columna $col_clave} => array({fila i; columnas $cols_valores})

ejecutarConsultaSinMsg()

ejecutarConsultaSinMsg(string  $consulta) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado, sin retornar ningun error.

Parameters

string $consulta

Returns

\ADORecordSet —

null o false si hay un error

ejecutarConsulta()

ejecutarConsulta(string  $consulta, boolean  $excepcion = FALSE) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado.

Parameters

string $consulta
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

\ADORecordSet

ejecutarConsultaLimitOffsetSinMsg()

ejecutarConsultaLimitOffsetSinMsg(string  $consulta, integer  $numrows = -1, integer  $offset = -1, array  $inputarr = null) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado, limitando la cantidad de registros, sin retornar ningun error.

Parameters

string $consulta
integer $numrows
integer $offset
array $inputarr

Returns

\ADORecordSet —

null o false si hay un error

ejecutarConsultaLimitOffset()

ejecutarConsultaLimitOffset(string  $consulta, integer  $numrows = -1, integer  $offset = -1, array  $inputarr = NULL, boolean  $excepcion = FALSE) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado, limitando la cantidad de registros.

Parameters

string $consulta
integer $numrows
integer $offset
array $inputarr
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

\ADORecordSet

ejecutarConsultaSeguraLimitOffsetSinMsg()

ejecutarConsultaSeguraLimitOffsetSinMsg(string  $consulta, integer  $numrows = -1, integer  $offset = -1, array  $inputarr = null) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado, sin retornar ningun error.

Parameters

string $consulta
integer $numrows
integer $offset
array $inputarr

Returns

\ADORecordSet —

null o false si hay un error

ejecutarConsultaSeguraLimitOffset()

ejecutarConsultaSeguraLimitOffset(string  $consulta, integer  $numrows = -1, integer  $offset = -1, array  $inputarr = NULL, boolean  $excepcion = FALSE) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado.

Parameters

string $consulta
integer $numrows
integer $offset
array $inputarr
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

\ADORecordSet

ejecutarConsultaSeguraSinMsg()

ejecutarConsultaSeguraSinMsg(string  $consulta) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado, sin retornar ningun error.

Parameters

string $consulta

Returns

\ADORecordSet —

null o false si hay un error

ejecutarConsultaSegura()

ejecutarConsultaSegura(string  $consulta, boolean  $excepcion = FALSE) : \ADORecordSet

Ejecuta la consulta y retorna el RecordSet asociado en un contexto de seguridad determinado.

Parameters

string $consulta
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

Returns

\ADORecordSet

ejecutarConsultaActualizacion()

ejecutarConsultaActualizacion(string  $consulta, string  $operacion = '', boolean  $log = TRUE, boolean  $excepcion = FALSE) 

Ejecuta una consulta, sin retornar un RecordSet.

Se utiliza cuando la consulta corresponde a una actualización.

Parameters

string $consulta

el código sql a ejecutar

string $operacion

nombre de la operación a realizar: 'I', 'U' o 'D'; sólo se utiliza en el registro de log

boolean $log

¿se debe guardar un registro de la operación en el log?

boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Throws

\ExcepcionXGAP

si se produce un error y $excepcion es TRUE

AutoExecute()

AutoExecute(string  $table, mixed  $fields_values, string  $mode = 'INSERT', string|false  $where = FALSE, boolean  $forceUpdate = true, boolean  $magicq = false, boolean  $registro_log = true, boolean  $excepcion = false) : boolean

Este metodo inserta o actualiza tablas tomando los datos de un arreglo, donde las claves son los nombres de los campos y el valor del arreglo el valor a almacenar.

Parameters

string $table
mixed $fields_values
string $mode

modo de operación; uno de: { 'INSERT' | '1' | 'UPDATE' | '2' }; '1' es equivalente a 'INSERT' y '2' a 'UPDATE'

string|false $where
boolean $forceUpdate
boolean $magicq
boolean $registro_log
boolean $excepcion

indica el comportamiento cuando hay un error: true para emitir una excepción ExcepcionXGAP o false para generar un error de la aplicación

Returns

boolean

cerrar()

cerrar() 

Termina la conexión con la base de datos.

Este método es llamado al final de cada página.

finalizarConexion()

finalizarConexion() 

Finaliza la conexion.

Es equivalente a \cerrar().

metaDatos()

metaDatos(string  $table, boolean  $excepcion = false) : array

Retorna los metadatos asociados a una tabla.

De momento no es posible retornar metadatos completos sobre vistas: si $tabla corresponde a una vista, retorna metadatos sólo para algunas de sus columnas.

No se emplea la función provista por PHP debido a que se agregan algunos metadatos adicionales como 'clen' y 'serial'.

El array devuelto tiene la siguiente estructura:

array(
    'nombre columna 1' => array(
        'hasdefault' => [boolean] ¿tiene default?,
        'serial'     => [boolean] ¿es una columna serial?,
        'default'    => [mixed] valor por defecto,
        'type'       => [string] tipo específico para la base de datos,
        'gentype',   => [string] tipo genérico, una de las constantes DATATYPE_*,
        'notnull'    => [boolean] ¿debe tener sólo valores no nulos?,
        'len'        => [int] longitud máxima,
        'clen'       => [int] actualmente es alias de 'len',
        'size'       => [int] tamaño,
        'scale'      => [int] escala, para valores numéricos,
        'pkey'       => [boolean] ¿es clave primaria?,
        'unique'     => [boolean] ¿tiene una restricción de unicidad?
                        Es true aún si forma parte de una restricción compuesta
    ),
    ...
)

Los nombres de columnas (claves del array externo) siempre quedan en minúsculas, independientemente de cómo estén en la tabla.

Parameters

string $table

nombre de la tabla

boolean $excepcion

indica el comportamiento cuando hay un error: true para emitir una excepción ExcepcionXGAP o false para generar un error de la aplicación

Returns

array

clavesPrimarias()

clavesPrimarias(string  $tabla) : array

Devuelve los nombres de las columnas que forman la clave primaria de <var>$tabla</var>.

Parameters

string $tabla

Returns

array

clavesExtranjeras()

clavesExtranjeras(string  $tabla, string|false  $esquema = false) : array

Devuelve los nombres de las claves extranjeras asociadas a una <var>$tabla</var>, las subclases deben sobreescribir segun las tablas de sistema.

Se reimplementa porque ADO devuelve solo el ultimo campo en una clave multicampo.

Parameters

string $tabla
string|false $esquema

Returns

array

referenciasEntrantes()

referenciasEntrantes(string  $tabla, string  $esquema = null) : array

Devuelve descripciones de referencias entrantes a <var>$tabla</var>, es decir, de claves extranjeras de otras tablas que hacen referencia a <var>$tabla</var>.

El formato de la estructura devuelta es el siguiente:

array( 'nombre tabla referenciante' => array( 'esquema' => '{esquema tabla referenciante}', // ==== Subestructura mantenida por compatibilidad ============== // Detalles de la última referencia procesada de la tabla referenciante // a $tabla. // Esta subestructura se mantiene por compatibilidad con // versiones previas, pero la lista completa de referencias desde // la tabla referenciante se incluye en los siguientes subarrays // con índices numéricos. 'nombre' => '{nombre del constraint n}', 'columnas' => array( '{nombre columna referenciante n1}' => '{nombre columna referenciada n1}', ... ), // ==== Subestructura actual ==================================== // Lista de referencias de la tabla referenciante a $tabla 'cantidad' => n, // cantidad de referencias desde esta tabla a $tabla // Los subarrays con índices numéricos están ordenados ascendentemente // por el valor de 'nombre'. [0] => array( 'nombre' => '{nombre del constraint 1}', 'columnas' => array( '{nombre columna referenciante 11}' => '{nombre columna referenciada 11}', '{nombre columna referenciante 12}' => '{nombre columna referenciada 12}', ... ), ), ... [n-1] => array( 'nombre' => '{nombre del constraint n}', 'columnas' => array( '{nombre columna referenciante n1}' => '{nombre columna referenciada n1}', '{nombre columna referenciante n2}' => '{nombre columna referenciada n2}', ... ) ) ), ... )

Por ejemplo, con el siguiente esquema de BD:

CREATE TABLE s1.pais ( id serial NOT NULL PRIMARY KEY, ... );
CREATE TABLE s1.localidad (
    id_pais integer NOT NULL,
    id_localidad integer NOT NULL,
    ...,
    PRIMARY KEY (id_pais, id_localidad),
    CONSTRAINT fk_localidad_id_pais
        FOREIGN KEY (id_pais) REFERENCES s1.pais (id)
);
CREATE TABLE s1.sucursal (
    id serial NOT NULL PRIMARY KEY,
    id_pais integer NOT NULL,
    id_localidad integer NOT NULL,
    ...,
    CONSTRAINT fk_sucursal_id_pais_id_localidad
        FOREIGN KEY (id_pais, id_localidad)
        REFERENCES s1.localidad (id_pais, id_localidad)
);
CREATE TABLE s2.deposito (
    id serial NOT NULL PRIMARY KEY,
    id_pais integer NOT NULL,
    id_localidad integer NOT NULL,
    id_pais_proveedor_principal integer,
    id_localidad_proveedor_principal integer,
    ...,
    CONSTRAINT fk_deposito_id_pais_id_localidad
        FOREIGN KEY (id_pais, id_localidad)
        REFERENCES s1.localidad (id_pais, id_localidad),
    CONSTRAINT fk_deposito_id_localidad_proveedor_principal
        FOREIGN KEY (id_pais_proveedor_principal, id_localidad_proveedor_principal)
        REFERENCES s1.localidad(id_pais, id_localidad)
);

el llamado:

$resultado = $conexion->referenciasEntrantes('localidad');

devolvería:

$resultado == array( 'sucursal' => array( 'esquema' => 's1', 'nombre' => 'fk_sucursal_id_pais_id_localidad', 'columnas' => array( 'id_pais' => 'id_pais', 'id_localidad' => 'id_localidad' ), 'cantidad' => 1, [0] => array( 'nombre' => 'fk_localidad_pais_localidad', 'columnas' => array( 'id_pais' => 'id_pais', 'id_localidad' => 'id_localidad' ) ) ), 'deposito' => array( 'esquema' => 's2', 'nombre' => 'fk_deposito_id_localidad_proveedor_principal', 'columnas' => array( 'id_pais_proveedor_principal' => 'id_pais', 'id_localidad_proveedor_principal' => 'id_localidad' ), 'cantidad' => 2, [0] => array( 'nombre' => 'fk_deposito_id_localidad_proveedor_principal', 'columnas' => array( 'id_pais_proveedor_principal' => 'id_pais', 'id_localidad_proveedor_principal' => 'id_localidad' ) ), [1] => array( 'nombre' => 'fk_deposito_id_pais_id_localidad', 'columnas' => array( 'id_pais' => 'id_pais', 'id_localidad' => 'id_localidad' ) ) ) )

Parameters

string $tabla

nombre de la tabla referenciada

string $esquema

nombre del esquema donde se encuentra la tabla referenciada; si es nulo, vacío o falso, la tabla se debe poder encontrar sin calificarla con el esquema

Returns

array —

lista de referencias entrantes o null si hay un error

estaSiendoReferenciado()

estaSiendoReferenciado(string  $tabla, array  $registro, string  $esquema = null) : boolean

Permite comprobar si un registro en particular de una tabla está siendo referenciado desde alguna otra.

Devuelve un valor booleano que indica si un registro en la tabla $tabla está siendo referenciado desde otra tabla, es decir, hay otra tabla que tiene una clave extranjera que referencia al registro $registro de la tabla $tabla.

Parameters

string $tabla

nombre de la tabla

array $registro

valores del registro buscado; debe contener al menos los valores de las columnas referenciadas desde otras tablas (normalmente clave primaria o alternativas)

string $esquema

nombre del esquema donde se encuentra la tabla; si es nulo, vacío o falso, la tabla se debe poder encontrar sin calificarla con el esquema

Returns

boolean —

true si el registro está siendo referenciado, false si no, o null si no se puede consultar

comentarioTabla()

comentarioTabla(string  $tabla, string  $esquema = null, boolean  $excepcion = false) : string

Devuelve el comentario de una tabla.

Parameters

string $tabla
string $esquema
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

string

comentariosColumnas()

comentariosColumnas(string  $tabla, string  $esquema = null, boolean  $excepcion = false) : array

Devuelve el comentario de las columnas de una tabla.

El resultado sólo incluye las columnas que tienen comentario.

Parameters

string $tabla
string $esquema
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

array —

un array con la estructura

array('{nombre col 1}' => '{comentario col 1}', ...)

getSinonimos()

getSinonimos() : array

Devuelve los sinonimos definidos en la base.

Returns

array

liberar()

liberar(mixed  $recurso) 

Cierra el recurso que le pasan, si responde al método <kbd>Close()</kbd>.

Se puede usar para liberar RecordSets.

Parameters

mixed $recurso

puedeSerNulo()

puedeSerNulo(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo puede tomar valor nulo.

.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo permite nulos; false en caso contrario; también retorna true si $campo no está en $metadatos

esFecha()

esFecha(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo date.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos

esTimestamp()

esTimestamp(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo timestamp.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un timestamp, false en caso contrario; también retorna false si $campo no está en $metadatos

esHora()

esHora(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo time.

Esta implementación devuelve siempre false. Las subclases que correspondan a bases de datos que soporten el tipo de datos TIME deben proveer una implementación adecuada para este método.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un time, false en caso contrario; también retorna false si $campo no está en $metadatos

esEntero()

esEntero(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo int.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un int, false en caso contrario; también retorna false si $campo no está en $metadatos

esDecimal()

esDecimal(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo campo es de tipo numeric o float o number.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es numérico no entero, false en caso contrario; también retorna false si $campo no está en $metadatos

esBooleano()

esBooleano(array  $metadatos, string  $campo) : boolean

Retorna verdadero o falso dependiendo si el campo es de tipo booleano.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean

esReadOnly()

esReadOnly(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de sólo lectura.

No implementado. Por el momento, retorna siempre falso.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es de sólo lectura, false en caso contrario; también retorna false si $campo no está en $metadatos

esSerial()

esSerial(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo serial.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos

tamanoMaximo()

tamanoMaximo(array  $metadatos, string  $campo) : integer

Retorna el tamaño máximo en caracteres que puede tener un campo en una tabla de la base de datos.

Para las columnas numéricas se asume base 10.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

integer —

el tamaño máximo, o 0 si no existe $campo en $metadatos

aBooleanTF()

aBooleanTF(mixed  $valor, string  $true, string  $false) : boolean

Transforma un valor dado en booleano, de acuerdo a lo que se espera que devuelva la base de datos.

Parameters

mixed $valor
string $true

valor verdadero en la BD

string $false

valor falso en la BD

Returns

boolean —

$valor transformado en booleano; puede devolver null si $valor no es booleano ni coincide con $true ni $false

aBoolean()

aBoolean(mixed  $valor) : boolean

Transforma un valor dado en booleano, de acuerdo a lo que se espera que devuelva la base de datos.

Utiliza los parámetros de configuración XGAP_CONF_VALOR_VERDADERO_SQL y XGAP_CONF_VALOR_FALSO_SQL.

Parameters

mixed $valor

Returns

boolean —

$valor transformado en booleano; puede devolver null si $valor no es booleano ni coincide con los parámetros de configuración mencionados

obtenerResultado()

obtenerResultado(\ADORecordSet  $rs, integer  $fila, string  $columna) : mixed

Dado un RecordSet obtiene el valor de una columna para una fila especificada. Es para encapsular las llamadas dependientes a la base empleada.

Parameters

\ADORecordSet $rs
integer $fila
string $columna

Returns

mixed

obtenerFila()

obtenerFila(\ADORecordSet  $rs, integer  $fila) : array

Dado un RecordSet, devuelve un array con todos los valores de una fila.

Parameters

\ADORecordSet $rs
integer $fila

Returns

array

obtenerResultadoCompleto()

obtenerResultadoCompleto(\ADORecordSet  $rs) : array

Devuelve un array, indexado de 0 a $this->cantidadDeFilas($rs) - 1, con todas las filas en el recordset.

Parameters

\ADORecordSet $rs

Returns

array —

los datos en el recordset; vacío si el recordset no tiene filas; null si el recordset no es válido

cantidadDeFilas()

cantidadDeFilas(mixed  $rs) : integer

Retorna la cantidad de filas de un recordset.

Parameters

mixed $rs

Returns

integer

obtenerImagen()

obtenerImagen(string  $consulta) : array

Retorna datos de una consulta.

Parameters

string $consulta

Returns

array

operadoresBinariosComparacion()

operadoresBinariosComparacion() : array

Devuelve una lista de todos los operadores binarios de comparación definidos por las constantes <var>self::BIN_COMP_OP_*</var>.

Returns

array

textoOperadorBinarioComparacion()

textoOperadorBinarioComparacion(integer  $op) : string

Devuelve el operador SQL que corresponde a <var>$op</var>.

Parameters

integer $op

una de las constantes self::BIN_COMPOP*

Returns

string

expresionComparacionBinaria()

expresionComparacionBinaria(string  $izq, string  $der, integer|string  $op, boolean  $escapar_comodines_der = false, boolean  $traducir_izq = true, boolean  $traducir_der = true, boolean  $comparar_en_mayusculas = null, boolean  $str_izq = false, boolean  $str_der = true) : string

Construye una expresión de comparación SQL, dadas una expresión izquierda, una derecha y un operador.

Este método no escapa las comillas en las expresiones dadas; de ser necesario se debe hacer antes de invocarlo.

Parameters

string $izq

expresión izquierda

string $der

expresión derecha

integer|string $op

operador; una de las constantes self::BIN_COMPOP*, o el operador a usar si no es uno de los predefinidos, por ejemplo '%'

boolean $escapar_comodines_der

¿se deben escapar los comodines (%, _) que pudiera haber en la expresión derecha?

boolean $traducir_izq

¿se deben traducir los caracteres acentuados de la expresión izquierda al correspondiente caracter sin acento?

boolean $traducir_der

¿se deben traducir los caracteres acentuados de la expresión derecha al correspondiente caracter sin acento?

boolean $comparar_en_mayusculas

¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no

boolean $str_izq

¿la expresión izquierda se debe considerar como un string SQL? en ese caso, se encierra entre comillas

boolean $str_der

¿la expresión derecha se debe considerar como un string SQL? en ese caso, se encierra entre comillas; tener en cuenta que si $op es uno de self::BIN_COMPOP{SW|EW|CONT|NSW|NEW|NCONT}, siempre se considera como string, independientemente del valor de este parámetro

Returns

string

expresionComparacionValorEntre()

expresionComparacionValorEntre(string  $subexpr_valor, mixed  $limite_inf, mixed  $limite_sup, boolean  $limite_inf_inclusive = true, boolean  $limite_sup_inclusive = true, string  $subexpr_limite_inf = null, string  $subexpr_limite_sup = null) : string

Construye una expresión de comparación correspondiente a un intervalo con límites dados.

Este método no aplica ningún filtro o escape a los valores que recibe, ni construye las subexpresiones de acuerdo al tipo de datos de la columna implicada, por lo que el llamador debe asegurarse de pasar valores correctos. Tampoco comprueba que el límite inferior sea menor que el superior.

Ejemplos:

// $_REQUEST['fecha_alta_desde'] == '01/01/2014' // $_REQUEST['fecha_alta_hasta'] == '31/12/2015' $fecha_alta_desde = $conexion->qstr(Request::obtener(fecha_alta_desde)); $fecha_alta_hasta = $conexion->qstr(Request::obtener(fecha_alta_hasta)); $expr = $conexion->expresionComparacionValorEntre('fecha_alta', $fecha_alta_desde, $fecha_alta_hasta, true, true, "date '$fecha_alta_desde'", "date '$fecha_alta_hasta'"); // $expr == 'fecha_alta >= date '01/01/2014' AND fecha_alta <= date '31/12/2015'

// $_REQUEST['cant_menor'] == '5' // $_REQUEST['cant_mayor'] == '' $cant_menor = filter_var(Request::obtener('cant_menor', FILTER_SANITIZE_NUMBER_INT); $cant_mayor = filter_var(Request::obtener('cant_mayor', FILTER_SANITIZE_NUMBER_INT); $expr = $conexion->expresionComparacionValorEntre('cant', $cant_menor, $cant_mayor, false, false); // $expr = 'cant > 5'

Parameters

string $subexpr_valor

subexpresión que representa el valor a buscar, comúnmente un nombre de columna

mixed $limite_inf

límite inferior del rango; si es vacío, el intervalo no tiene límite inferior; nota: el 0 no se considera vacío

mixed $limite_sup

límite superior del rango; si es vacío, el intervalo no tiene límite superior; nota: el 0 no se considera vacío

boolean $limite_inf_inclusive

¿el intervalo debe incluir el $limite_inf (limite_inf <= valor) o no (limite_inf < valor)?

boolean $limite_sup_inclusive

¿el intervalo debe incluir el $limite_sup (limite_sup >= valor) o no (limite_sup > valor)?

string $subexpr_limite_inf

subexpresión a usar como límite inferior dentro de la expresión que se retorna, por ejemplo

"date '$limite_inf'"; si es vacía, se usa $limite_inf
string $subexpr_limite_sup

subexpresión a usar como límite superior dentro de la expresión que se retorna, por ejemplo

"date '$limite_sup'"; si es vacía, se usa $limite_sup

Returns

string —

la expresión

crearConsulta()

crearConsulta(  $SQL,   $SQLCount, string  $select, string  $from, string  $where, string  $orderBy, string  $groupBy, string  $having, array  $filtros, array  $columnasFiltros, string  $condiciones = '', string  $parametrosACondicion = '', string  $condicionesPersonalizadas = '', string  $orden = '', boolean  $stripslashes = true, boolean  $comparar_en_mayusculas = null) 

Construye una consulta de acuerdo a los parametros de entrada.

Parameters

$SQL
$SQLCount
string $select

expresión para el SELECT

string $from

expresión para el FROM

string $where

expresión para el WHERE

string $orderBy

expresión para el ORDER BY

string $groupBy

expresión para el GROUP BY

string $having

expresión para el HAVING

array $filtros

valores por los que se debe filtrar el resultado

array $columnasFiltros

expresiones o nombres de columnas que se usan en los filtros

string $condiciones

???

string $parametrosACondicion

ignorar -- no se está usando

string $condicionesPersonalizadas

???

string $orden

???

boolean $stripslashes

¿se debe aplicar {@link stripslashes()} a los valores de $filtros? Este parámetro existe y tiene valor por defecto true por compatibilidad con versiones anteriores.

boolean $comparar_en_mayusculas

¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no

crearConsultaCustom()

crearConsultaCustom(  $SQL,   $SQLCount, string  $orderBy, array  $filtros, array  $columnasFiltros, string  $condiciones = '', string  $condicionesPersonalizadas = '', string  $orden = '', boolean  $stripslashes = true, boolean  $comparar_en_mayusculas = null) 

Se deben proveer <var>$SQL</var> y <var>$SQLCount</var> con las consultas ya construidas; este método se encarga de agregar los filtros.

Parameters

$SQL
$SQLCount
string $orderBy

expresión para el ORDER BY

array $filtros

valores por los que se debe filtrar el resultado

array $columnasFiltros

expresiones o nombres de columnas que se usan en los filtros

string $condiciones

???

string $condicionesPersonalizadas

???

string $orden

???

boolean $stripslashes

¿se debe aplicar {@link stripslashes()} a los valores de $filtros? Este parámetro existe y tiene valor por defecto true por compatibilidad con versiones anteriores.

boolean $comparar_en_mayusculas

¿las comparaciones se deben hacer transformando los valores a mayúsculas? si es null, toma el valor XGAP_VAL_FORZAR_MAYUSCULAS si está definido o XGAP_CONF_COMPARAR_EN_MAYUSCULAS si no

crearConsultaGenerica()

crearConsultaGenerica(string  $from, array|string  $cols, array  $incluir = null, array  $excluir = null, array  $clausulas_extra = null) 

Crea una consulta SELECT.

Parameters

string $from
array|string $cols

columna o columnas a incluir en el SELECT

array $incluir

filtro por inclusión; debe tener el formato:

array(
    // columna a incluir en la condición
    //     => valor o valores que debe tener esa columna
    array({string col} => {array|scalar valores},
         ...
)
array $excluir

filtro por exclusion; debe tener el formato:

array(
    // columna a incluir en la condición
    //     => valor o valores que no debe tener esa columna
    array({string col} => {array|scalar valores},
         ...
)
array $clausulas_extra

otras cláusulas SQL a incluir en la consulta; las claves de este array pueden ser: 'WHERE', 'GROUP BY', 'HAVING', 'ORDER BY'

getTablas()

getTablas(string  $esquema = '', string  $mascara = null, boolean  $excepcion = false) : array

Retorna un array con los nombres de las tablas en la base de datos.

La implementación provista en esta clase ignora el parámetro $esquema, dado que utiliza ADOConnection.MetaTables, que no lo soporta. Por este motivo, el arreglo devuelto tiene la forma:

array('' => array('tabla1', 'tabla2', ...))

Las subclases pueden proveer una implementación que lo utilice.

Parameters

string $esquema

nombre del esquema a obtener

string $mascara

filtro a aplicar en la búsqueda para limitar los nombres retornados; usa la sintaxis de LIKE de SQL; por ejemplo, $mascara = 'TMP%'

boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

array —

lista de tablas agrupadas por esquema, en el formato:

array('esquema1' => array('tabla1', 'tabla2', ...), 'esquema2' => array(...), ...); null si ocurre un error

getVistas()

getVistas(string  $esquema = '', string  $mascara = null, boolean  $excepcion = false) : array

Retorna un array con los nombres de las vistas en la base de datos.

La implementación provista en esta clase ignora el parámetro $esquema, dado que utiliza ADOConnection.MetaTables, que no lo soporta. Por este motivo, el arreglo devuelto tiene la forma:

array('' => array('vista1', 'vista2', ...)). Las subclases pueden proveer una implementación que lo utilice.

Parameters

string $esquema

nombre del esquema a obtener

string $mascara

filtro a aplicar en la búsqueda para limitar los nombres retornados; usa la sintaxis de LIKE de SQL; por ejemplo, $mascara = 'TMP%'

boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

array —

lista de vistas agrupadas por esquema, en el formato:

array('esquema1' => array('vista1', 'vista2', ...), 'esquema2' => array(...), ...); null si ocurre un error

qstr()

qstr(string  $str, boolean  $magic_quotes_enabled = false) : string

Escapa las comillas que pudiera haber en <var>$str</var>, pero no lo encierra entre comillas.

Parameters

string $str
boolean $magic_quotes_enabled

Returns

string

concat()

concat() : string

Devuelve el string SQL que corresponde a la concatenación de los valores dados.

Por ejemplo, para PostgreSQL: $conexion->concat('apellido', "', '", 'nombre') == "apellido||', '||nombre"

Returns

string

sqlstr2php()

sqlstr2php(string  $str) : string

Transforma un valor que puede ser un string SQL en un string PHP.

Si $str es un string que comienza y termina con comillas simples, devuelve el string sin comillas. Caso contrario, devuelve el string sin modificar.
Por ejemplo: $conexion->sqlstr2php("'t'") == "t" $conexion->sqlstr2php("5") == "5"

Parameters

string $str

Returns

string

setSeguridad()

setSeguridad(\iSeguridad  $seguridad) 

Establece el objeto iSeguridad que se aplica a esta conexión.

Parameters

\iSeguridad $seguridad

getSeguridad()

getSeguridad() : \iSeguridad

Retorna el objeto iSeguridad que se aplica a esta conexión.

Returns

\iSeguridad

getDBMS()

getDBMS() : string

Retorna el DBMS.

Returns

string

cambiarPathBusqueda()

cambiarPathBusqueda(string  $esquema) 

Cambia el path de busqueda en lo que se refiere a esquemas

Parameters

string $esquema

restablecerPathBusqueda()

restablecerPathBusqueda() 

Restablece el path de busqueda en lo que se refiere a esquemas

ejecutarStoredProcedure()

ejecutarStoredProcedure(string  $sp, boolean  $registro_log = false) : \RecordSet

Ejecuta un Stored Procedure.

Parameters

string $sp

línea de ejecución del stored procedure (nombre y parámetros)

boolean $registro_log

¿guardar un registro de la operación en el log de auditoría?

Returns

\RecordSet

siguienteId()

siguienteId(string  $secuencia) : mixed

Devuelve el siguiente valor de una secuencia de la base.

Parameters

string $secuencia

nombre de la secuencia

Returns

mixed —

el siguiente ID en la secuencia, o 0 si la operación no está soportada por la base

existeFilaCond()

existeFilaCond(string  $tabla, string  $cond, boolean  $excepcion = false) : boolean

Permite comprobar si existe al menos una fila en una tabla, dada una condición.

Parameters

string $tabla

el nombre de la tabla

string $cond

la condición; por ejemplo: $cond = "cantidad > 0 AND nombre LIKE 'a%'"

boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

boolean

existeFila()

existeFila(string  $tabla, mixed  $columnas, mixed  $valores, boolean  $permitir_vacios = false, boolean  $excepcion = false) : boolean

Permite comprobar si existe al menos una fila en una tabla que tenga ciertos valores.

La comparación se hace por igualdad entre las columnas y los valores dados.

Si ambos parámetros $columnas y $valores son arrays, la condición se construye por pares con la misma posición, por lo cual deben tener la misma cantidad de elementos. Si no, se busca el valor $valores en la columna $columnas.

Por ejemplo, si $columnas = array('id1', 'id2') y $valores = array(8, 45), entonces se buscan filas que cumplan $tabla.id1 = 8 y $tabla.id2 = 45.

Parameters

string $tabla

nombre de la tabla

mixed $columnas

(array | string) nombre/s de la/s columna/s donde se deben buscar los valores

mixed $valores

(array | mixed) valor/es a buscar en la/s columna/s

boolean $permitir_vacios

si es false, cualquier valor en $valores que corresponda a un string vacío hace que se retorne false

boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

Returns

boolean

existeProcedure()

existeProcedure(string  $nombre) : boolean

Verifica la existencia de un stored procedure en la base

Parameters

string $nombre

nombre del stored procedure

Returns

boolean —

true si el stored procedure existe

prepararConsulta()

prepararConsulta(string  $sql) : array

Prepara una consulta para ejecutar repetidas veces.

Parameters

string $sql

Returns

array

blobEncode()

blobEncode(string  $blob) : string

Codifica un valor de tipo BLOB en el formato requerido para enviarlo a la base de datos.

Si el driver en uso no requiere codificación de los BLOBs, el valor de entrada se retorna sin modificar.

Parameters

string $blob

Returns

string

blobDecode()

blobDecode(string  $blob, integer  $maxsize = false) : string

Decodifica un BLOB obtenido desde la base de datos.

Si el driver en uso no necesita decodificación, el valor de entrada se retorna sin modificar.

Parameters

string $blob
integer $maxsize

número máximo de bytes a retornar

Returns

string

StartTrans()

StartTrans(boolean  $log = true) 

Inicia de una transacción.

Las transacciones se pueden anidar.

Usar en combinación con CompleteTrans()

Parameters

boolean $log

¿se debe guardar un registro de la operación en el log?

CompleteTrans()

CompleteTrans(boolean  $autoComplete = true, boolean  $log = true) 

Finaliza una transacción.

Realiza un commit o un rollback según corresponda.

Usar en combinación con StartTrans().

Parameters

boolean $autoComplete

si es true, realiza un commit si no se detectaron errores SQL desde el inicio de la transacción o un rollback si se detectó alguno; si es false fuerza un rollback aún cuando no se haya detectado ningún error

boolean $log

¿se debe guardar un registro de la operación en el log?

FailTrans()

FailTrans(boolean  $log = true) 

Fuerza un estado de error en la transacción, obligando a realizar un rollback al final de la misma.

El rollback sólo se va a producir cuando se invoque a CompleteTrans().

Parameters

boolean $log

¿se debe guardar un registro de la operación en el log?

HasFailedTrans()

HasFailedTrans() 

Verifica si existe un estado de error en la transacción.

cambiarParametroConfiguracion()

cambiarParametroConfiguracion(string  $nombre_parametro, string  $valor_parametro, string  $duracion = '', boolean  $comprobar_error = TRUE) 

Permite cambiar un parámetro de configuración de la base de datos en tiempo de ejecución.

Parameters

string $nombre_parametro

parámetro a cambiar, por ejemplo 'search_path'

string $valor_parametro

valor a establecer

string $duracion

duración del cambio; actualmente puede ser 'SESSION' o 'LOCAL'. Ver documentación del comando SQL SET.

boolean $comprobar_error

¿Se debe comprobar si se produce un error al realizar el cambio? Si es TRUE y se produce un error, se realiza lo mismo que si falla una invocación a {@link Conexion::ejecutarConsulta()}; si es FALSE, los errores se ignoran.

establecerVariableSesion()

establecerVariableSesion(string  $nombre_variable,   $valor_variable, string  $duracion = '', boolean  $comprobar_error = TRUE) 

Permite establecer el valor de una variable de sesión.

La variable debe estar permitida por el parámetro de configuración de PostgreSQL custom_variable_classes.

Parameters

string $nombre_variable

nombre de la variable

$valor_variable
string $duracion

duración del cambio; actualmente puede ser 'SESSION' o 'LOCAL'. Ver documentación del comando SQL SET.

boolean $comprobar_error

¿Se debe comprobar si se produce un error al realizar el cambio? Si es TRUE y se produce un error, se realiza lo mismo que si falla una invocación a {@link Conexion::ejecutarConsulta()}; si es FALSE, los errores se ignoran.

establecerCharset()

establecerCharset() 

Establece el charset de la conexion. Por defecto no tiene efecto.

prepararSesion()

prepararSesion() 

Prepara la sesion de la conexion

prepararFechas()

prepararFechas(  $fields_values, array  $metadatos) 

Prepara la inserción/actualización de fechas. Por defecto no tiene efecto.

Parameters

$fields_values
array $metadatos

array devuelto por {@link metaDatos()}

tmpCountQuery()

tmpCountQuery(  $SQL) 

Crea una consulta sql para la cuenta, con un alias.

Parameters

$SQL

__construct()

__construct(\Auditor  $auditor, string  $dbms) 

Crea una conexión a la base de datos, en función de variables especificadas

Parameters

\Auditor $auditor
string $dbms

conectar()

conectar(string  $serv_completo, string  $usuario, string  $password, string  $base) : boolean

Establece la conexión a la base de datos.

La conexión es transitoria o persistente, dependiendo de XGAP_CONF_PERSISTENTE.

Parameters

string $serv_completo

en formato servidor:puerto

string $usuario
string $password
string $base

Returns

boolean —

true si la conexión se realizó correctamente

consultaParaLog()

consultaParaLog(string  $sql) : string

Formatea una consulta SQL para emitir a un log

Parameters

string $sql

Returns

string

errorConsulta()

errorConsulta(string  $consulta, string  $mensaje = null, boolean  $disparar_excepcion = false, \Exception  $excepcion_original = null) 

Parameters

string $consulta

la consulta que produjo el error

string $mensaje

un mensaje para el usuario

boolean $disparar_excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

\Exception $excepcion_original

la excepción que motivó la invocación a este método, si la hubo

Throws

\ExcepcionXGAP

si $disparar_excepcion es TRUE

procesarValorPorDefecto()

procesarValorPorDefecto(string  $valor) : string

Adapta los valores devueltos por ADODB para los metadatos de una columna a un formato válido.

Actualmente le está agregando '' y en postgresql además el agrega el tipo asociado, lo cual dificulta su uso en formularios HTML.
Esta función elimina las ' iniciales y finales que pudiera tener el valor pasado como parámetro y también el casting asociado, de haberlo.

Parameters

string $valor

Returns

string

metaType()

metaType(\ADOFieldObject  $field, \ADORecordSet  $rs) : string

Wrapper a ADORecordSet::MetaType().

Parameters

\ADOFieldObject $field
\ADORecordSet $rs

Returns

string —

una de las constantes self::DATATYPE_*

ajustarMetacolumnas()

ajustarMetacolumnas(string  $tabla,   $metacolumnas, boolean  $excepcion = false) 

Permite que las subclases modifiquen los metadatos obtenidos mediante ADOConnection.MetaColumns(), dado que pueden variar dependiendo del driver.

Parameters

string $tabla
$metacolumnas
boolean $excepcion

indica el comportamiento cuando hay un error: TRUE para emitir una excepción ExcepcionXGAP, FALSE para generar un error de la aplicación

puedeSerNuloInterno()

puedeSerNuloInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo puede tomar valor nulo.

.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo en minúsculas (clave en $metadatos)

Returns

boolean —

true si el campo permite nulos; false en caso contrario

esFechaInterno()

esFechaInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo date.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un date, false en caso contrario; también retorna false si $campo no está en $metadatos

esTimestampInterno()

esTimestampInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo timestamp.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo en minúsculas (clave en $metadatos)

Returns

boolean —

true si el campo es un timestamp, false en caso contrario

esHoraInterno()

esHoraInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo time.

Esta implementación devuelve siempre false. Las subclases que correspondan a bases de datos que soporten el tipo de datos TIME deben proveer una implementación adecuada para este método.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo (clave en $metadatos)

Returns

boolean —

true si el campo es un time, false en caso contrario; también retorna false si $campo no está en $metadatos

esEnteroInterno()

esEnteroInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo int.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo en minúsculas (clave en $metadatos)

Returns

boolean —

true si el campo es un int, false en caso contrario

esDecimalInterno()

esDecimalInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo campo es de tipo numeric o float o number.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo en minúsculas (clave en $metadatos)

Returns

boolean —

true si el campo es numérico no entero, false en caso contrario

esBooleanoInterno()

esBooleanoInterno(array  $metadatos, string  $campo) : boolean

Retorna verdadero o falso dependiendo si el campo es de tipo booleano.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo en minúsculas (clave en $metadatos)

Returns

boolean

esSerialInterno()

esSerialInterno(array  $metadatos, string  $campo) : boolean

Permite comprobar si un campo es de tipo serial.

Parameters

array $metadatos

array devuelto por {@link metaDatos()}

string $campo

nombre del campo, en minúsculas (clave en $metadatos)

Returns

boolean —

true si el campo es un date, false en caso contrario

tamanoMaximoInt()

tamanoMaximoInt(  $metadatos_campo) 

Tamaño máximo para campos gentype==self::DATATYPE_INT.

No se debe tener en cuenta $metadatos_campo['len|clen'].

Parameters

$metadatos_campo

tamanoMaximoNum()

tamanoMaximoNum(  $metadatos_campo) 

Tamaño máximo para campos gentype==self::DATATYPE_NUM.

No se debe tener en cuenta $metadatos_campo['len|clen'].

Parameters

$metadatos_campo

realizarEjecucionStoredProcedure()

realizarEjecucionStoredProcedure(string  $sp) : \RecordSet

Implementación dependiente de la base de datos de la ejecución de un stored procedure

Parameters

string $sp

línea de ejecución del stored procedure (nombre y parámetros)

Returns

\RecordSet

separarEsquemaTabla()

separarEsquemaTabla(string  $esquemaytabla,   $esquema,   $tabla) 

Dado un string que contiene un nombre de tabla que posiblemente incluye el esquema (<var>$esquemaytabla</var>), lo separa en nombre de esquema (<var>$esquema</var>) y nombre de tabla (<var>$tabla</var>).

  • Si $esquema no está vacío, no tiene efecto.
    • Si $esquemaytabla no contiene definición de esquema, el resultado es $tabla==$esquemaytabla y $esquema==''.

Código adaptado de ADOConnection._findschema().

Parameters

string $esquemaytabla
$esquema
$tabla