miércoles, 11 de julio de 2018

Nombres de Columnas en Tablas - Mantener Mayúsculas/Minúsculas o no?

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.

No hay comentarios.:

Publicar un comentario