(No hay información de versión disponible, podría estar únicamente en SVN)
SQL aceptado por 4D — PDO y SQL 4D
4D implementa estrictamente el estándar ANSI 89, y lo cumple. Se recomienda encarecidamente leer la documentación de 4D SQL para aprender sobre los comandos que están disponibles. La URL del manual es: » http://doc.4d.com/. Abajo se enumeran las características de 4D SQL: no es una lista exhaustiva, pero podría servir como introducción.
Característica | Alternativa | Nota |
---|---|---|
INTEGER | Modificar el SQL para que utilice INT. | INT es el tipo de entero admitido en 4Dv12.0. |
CHAR | Utilizar VARCHAR en su lugar. | No soportada en 4Dv12.0 |
UNION | No soportada. Realizar consultas por separado. | No soportada en 4Dv12.0 |
SELECT 1 + 1; | SELECT 1 + 1 FROM _USER_SCHEMAS; | FROM es necesario |
FLOAT | Convertir el valor FLOAT a un FLOAT o STRING, con una función de SQL 4D (CAST, ROUND, TRUNC o TRUNCATE) | No soportada en las versiones actuales del controlador PDO_4D |
Tipado fuerte | Tener cuidado con la consulta SQL, o con el código de PHP que proporciona datos con tipos exigidos | Se debe proporcionar el tipo correcto exigido por 4D. No se puede insertar '1' (como cadena) en una columna INTEGER. |
PDO::execute($fila)() : solamente funciona si todas las columnas de la tabla son de tipo TEXT o VARCHAR | Utilizar sentencias preparadas y los tipos correctos. | La extensión PDO convierte todos los valores a través de execute() a cadenas, y exige que la base de datos SQL analice los valores. |
SELECT NULL FROM TABLE | No utilizar constantes NULL. Extraerlas de la tabla | No está permitido utilizar la constante NULL el la lista de selección |
SELECT * FROM TABLE WHERE 1 | Utilizar WHERE 1 = 1 | No se puede utilizar una constante en una cláusula WHERE |
SHOW TABLES | Utilizar tablas de sistema | La lista de tablas, esquemas, índices, etc., están en estas tablas de sistema: _USER_TABLES, _USER_COLUMNS, _USER_INDEXES, _USER_CONSTRAINTS, _USER_IND_COLUMNS, _USER_CONS_COLUMNS, y _USER_SCHEMAS. |
Delimitador de estructura de SQL | Utilizar la siguiente función para proteger elementos SQL: function sqlEscapeElement(elem) { return '[' . str_replace(']',']]', $elem) . ']'; } | Para escapar nombres de elementos de SQL (tablas, campos, usuarios, grupos, esquemas, claves primarias, etc.), todo el identificador debe estar entre corchetes, y el corchete de cierre ']' debe ser doble. |