Hola en esta oportunidad solo quiero compartir contigo algunas experiencias que he tenido con el uso de nombres de columnas de tipo formato título, es decir manteniendo las mayúsculas y mínúsculas.
Para ponernos en contexto, supongamos que creamos una tabla en el Taller de SQL de la siguiente forma:
Tabla Nombre: CMO_CUSTOMER
Columnas:
– Cust_ID
– Cust_FirstName
– Cust_LastName
Y seleccionamos el checkbook Mantener Mayúsculas/Minúsculas
Al finalizar el asistente tenemos creada la tabla con los nombres de columnas de esta forma:
Que inconvenientes me trajo el usar «Mantener Mayúsculas/Minúsculas« en Apex?
En primer lugar cuando creamos una consulta SQL en nuestra aplicación y queremos mostrar ciertas columnas de la tabla, es necesario encerrar cada nombre de columna entre comillas dobles.
select «Cust_FirstName», «Cust_LastName»
from cmo_customer
Si no lo encerramos entre comillas nos muestra el error: Invalid indentifier
Entonces siempre debemos recordar de colocar las comillas dobles.
Eso no pasa si creamos la tabla con las columnas sin especificar el checkbox Mantener Mayúsculas/Minúsculas. Ya que las columnas se van a crear todo en mayúsculas en la tabla, no importando si lo escribimos en formato minúscula y mayúscula.
Otro problema es a la hora de querer filtrar un reporte por medio de la URL.
Supongamos que tenemos un botón el cual filtra nuestro reporte pasando el parámetro por la URL.
A modo de ejemplo he creado un botón en una página y la acción es Redirigir a URL:
http://localhost:8080/apex/f?p=&APP_ID.:2:&SESSION.::NO:RP,2,CIR:IR[IDENTIFICADOR_ESTATICO_REGION_INFORME_INTERACTIVO]
_<NOMBRE_COLUMNA>:<VALOR>
http://localhost:8080/apex/f?p=&APP_ID.:2:&SESSION.::NO:RP,2,CIR:IR[CUST]_Cust_ID:4
Mi region del reporte interactivo de la página 2 tiene un identificador estático denominado CUST.
Por mas que pasamos el nombre de columna y su valor el informe interactivo no se filtrará:
Lo que necesitamos hacer es colocar un alias de columna en la consulta SQL del Informe Interactivo
select «Cust_ID» «CUST_ID»,
«Cust_FirstName»,
«Cust_LastName»
from CMO_CUSTOMER
De esa forma se filtra el reporte sin problemas.
En el caso que usemos las columnas de la tabla sin especificar Mantener Mayúsculas/Minúsculas, no tendríamos ese problema de tener que colocar un alias de columnas si no quisieramos.
Cuando se crea el reporte por medio del asistente, éste coloca las comillas dobles a cada columna:
select «CUST_ID»,
«CUST_FIRSTNAME»,
«CUST_LASTNAME»
from CMO_CUSTOMER
Pero si nosotros ingresamos la consulta SQL manualmente, de igual forma funcionaría el filtro del reporte sin ningún problema.
select cust_id, cust_firstname,cust_lastname
from cmo_customer
Pasando esta URL en el botón:
http://localhost:8080/apex/f?p=&APP_ID.:2:&SESSION.::NO:RP,2,CIR:IR[CUST]_Cust_ID:4
o esta:
http://localhost:8080/apex/f?p=&APP_ID.:2:&SESSION.::NO:RP,2,CIR:IR[CUST]_CUST_ID:4
En conclusión a mi me gusta mas trabajar con los nombres de columna en mayúsuclas, que especificar si es mayúsculas o minúsculas.
Te dejo a ti que decidas la forma que más te gustaría trabajar en esta situación.