Posts

Showing posts with the label Oracle

Display Column with it's corresponding Foreign Key Column

Image
This Time I'll try to make a Process that prints a Data Dictionary, I'll make it part by part. and here I'll getthe Columns with it's corresponding Foreign Key Column, the next script will do it for the table name of the variable :TABLE_NAME . The only problem with this is then you have Primary Keys with two columns, it will repeat the table column. SELECT a.table_name, a.column_name, a.constraint_name, c.owner, -- referenced pk c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk, -- references Column r.table_name R_TABLE, r.column_name R_COLUMN FROM all_cons_columns a JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name JOIN all_constraints c_pk ON c.r_owner = c_pk.owner AND c.r_constraint_name = c_pk.constraint_name JOIN all_cons_columns R ON(c_pk.constraint_name = R.constraint_name ) WHERE c.constraint_type = 'R' AND a.table_...

Copy All the data from a DataBase using Apex

Image
Sometimes we don't have access to the Data Base it self and we can't make an export of the Data Base, in my case, I can only access through Apex, so I had to find a way to copy all the data to other Data Base, and probably, as it happened to me, all what you have found is the long way, download Table by table and then upload it, well, that could be enough if you have less than 10 tables, but if you have more, it would take many time, many click.. and bajh, We're to lazy to do it :P and I don't if you've heard this were you live, but "The Laziness is the mother of all inventions" hehehe.. Unfortunately ( And forgive me by lying with 'all' in the tittle ) this method will not work with tables that have columns of type Clob, Blob or Long ( and maybe others ). Maybe this will not be a problem if your data base has not many tables with data of that type, then you can use it for the others and upload one by one the tables with columns of that type. ...

Delete the data from All tables in Oracle

Image
In this case I need to delete all the Data in my tables because I'm making test of upload all the Data, and I'm too lazy to delete all the tables and create them again, so I'll show you a way to delete all the data :) . First you need to disable all the constraints, or at least foreign keys, if you don't do it, you can get an error unless you delete the tables in the right order. watch this post to disable them. Disable and Enable All table constraints in Oracle Now that you have disabled all the constraints, run the next pl/sql block that will delete all the data in all the tables. and as you don't have constraints, you will not get errors :D . begin for r in (select table_name from user_tables) LOOP execute immediate('delete '||r.table_name); END LOOP; end; After do it, active again the constraints and it is done, you have deleted all the data from the tables, now you can celebrate that you have a clean data Base ready to test or first use :D . Now y...

Disable and Enable All table constraints in Oracle

Image
Sometimes you have to do something that requires disable all constraints, like upload Data, and enable them again after do it. I've found two useful pl/sql code that will do it, but it will only work if all your constraints are enabled, if there is one that is not enabled, at the end of the process it will be enabled. if you have not that problem, check the useful pl/sql here Disable all table constraints in Oracle If you don't know if there are disabled constraints, you can find the answer running the next query, if it doesn't return data, all your constraints are enabled and you can use the pl/sql in the adobe link SELECT constraint_name FROM user_constraints WHERE status = 'DISABLED' If you have disabled constraints that you don't need, you can delete them and use the adove link, but sometimes we have disabled constraints because the aplication is not 100% complete or something, anyway, those are constraints that you'll need in the future and...

Carga de Archivos en Apex 4.0

Image
En esta ocasión coloco la versión de Apex en el título, por que no sé si en versiones anteriores sea así de fácil. Pero igual podrian intentar, me avisan si les sirve :P . Para carga un archivo nuestra tabla debe tener al menos un campo de tipo Blob para almacenar el archivo, y uno para el nombre o para el tipo de archivo, ya que si no los colocamos, al descargarlo el archivo estará sin nombre ni extención, para eso usaremos la columna del nombre, ya que así lo guarda con todo y extensión. Como siempre, pueden descargar los archivos de la aplicación de ejemplo aquí . Pero si les da pereza instalarla y todo, les explico lo básico. Trabajaremos en las páginas de Albums y Álbum como pudieron ver en el vídeo, la primera sera un reporte con un link de descarga del archivo y la segunda permitirá visualizarlo, cargarlo, y eliminarlo. El script de la tabla con la que trabajaremos es el siguiente: create table RELEASE ( ID_RELEASE NUMBER not null, ID_ARTIST ...

Procesos con Items de Opción multiple - Apex

Image
No solo con listas de opción múltiple, si no también con checkbox y shuttles. De esto no tengo referencias por que esto lo hizo un compañero hace rato y de ahí en adelante fue puro copy-paste :P Para esto usaremos una base de datos basada en 3 tablas, FANCLUB , FAN y la relación intermedia FAN_FANCLUB . La relación entre un Fan y un Fanclub es n-n (por que uno tiene derecho a que le guste más de un artista :P ), por eso se crea la tabla intermedia FAN_FANCLUB . El ejemplo con el que mostrare esto se centrara en la página de edición de Fan, en donde podremos seleccionar a que fan clubs pertenece, eso lo haremos a través de un shuttle. Al momento de aplicar cambios debemos verificar que los fanclubs al lado izquierdo del shuttle no existan ya en la Base de datos, si es así las agregamos y le asignamos un código dependiendo del ultimo código asignado en ese fanclub, es por eso que no podemos eliminarlos y volverlos a crear. También debemos eliminar las que están en la Base de datos y n...

Validaciones en las filas seleccionadas de un Tabular Form- Apex

Image
Esto que puede ser tan simple me tomo casi 3 horas saber como hacerlo, el ejemplo sera para validar al momento de eliminar en Apex 4.1.1 aunque puede funcionar en otras versiones de Apex. Los archivos para correr el ejemplo pueden ser descargados aquí . El .rar incluye script de creación de BD y la aplicación. La base de datos solo contiene 2 tablas, una de artistas y otra de canciones. en este ejemplo validaremos que no se pueda eliminar un artista si tiene canciones asociadas. Lo primero es identificar el id de cada columna, para esto buscamos el id de cada columna, generalmente corresponde con el orden en el que están las columnas, en el reporte. En este caso las columnas y sus ID son: [row selector]: f01 ID_ARTIST: f02 ID_ARTIST_ROW_DISPLAY: f03 NAME: f04

Instalar Paquete de Idioma en Apex

Image
busque y busque y no lo encontré :s pero me vali de varios links para sacar el método :) . Cuando descargamos Apex, también descargamos los script necesarios para instalar 9 paquetes de idiomas. estos están alojados en apex/builder el de español es " es " y el de Japones es " ja ". Antes de ejecutar cualquier script, debemos asignar al parámetro NLS_LANG el valor American_America.AL32UTF8 Para esto en Windows ejecutamos lo siguiente set NLS_LANG=American_America.AL32UTF8 En linux creo que es así: NLS_LANG=American_America.AL32UTF8 export NLS_LANG Ahora tenemos que ejecutar el script que instalara el lenguaje que queremos, por ejemplo (y lo más probable) Español, para esto vamos a la carpeta apex/builder/es . e ingresamos a la Base de datos como Sys y nos movemos al esquema en el que esta Apex, para esto primero consultamos el nombre del esquema con la siguiente query. SELECT username FROM dba_users where username like 'APEX_%'; esto nos puede a...

Restringir Tamaño de entrada en campos de un Tabular Form

Image
Este sera uno de los TANTOS posts que tendré sobre las fascinantes y generalmente frustrantes tabular forms . en esta ocación les mostrare como restringir el valor de entrada de un campo en textarea en un tabular form, funciona para los demás tipo de campos en los que el usuario ingresa texto. Lo primero que tendremos que hacer sera crear una función de JavaScript que validara la cantidad de caracteres que tiene un campo. en caso de que supere esa cantidad, recortara el contenido al limite permitido. function textSize(field,maxlimit) { if (field.value.length > maxlimit){ field.value = field.value.substring(0, maxlimit); } } Guardamos este script en un archivo, por ejemplo ' Functions.js ' y lo cargamos a Apex. Para esto vamos a " shared components > Files > Static Files >Create ", aqui. seleccionamos el archivo que creamos y lo cargamos. Ahora para importarlo en las páginas tenemos 2 opciones, importarlo en el template o en las páginas que usara...

ID Basado en trigger y secuencia para todas las tablas - Oracle

Image
En ocasiones todas o la mayoría de las tablas de una base de datos requieren que su ID sea sacado de un trigger el cual llama una secuencia, por lo que tendremos que crear los trigger y las secuencias para esas tablas las cuales pueden ser muchas. esto nos lleva a 2 situaciones, en donde la base de datos no tiene ningún dato, y en donde esta ya tiene algunos, por lo que la secuencia no puede empezar desde 1. Base de Datos sin Datos :P En el primer caso basta con ejecutar el siguiente bloque pl/sql el cual nos darán el script para crear las secuencias y los triggers, podriamos hacerlo todo en un solo loop, pero queremos que el script de las secuencias nos quede en un bloque y el de los triggers en otro, solo por orden. BEGIN FOR r IN ( SELECT table_name FROM user_tables) LOOP dbms_output.put_line ('CREATE SEQUENCE S_'|| r.table_name || ' MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE'||chr(...

Actualizar a Apex 4.1

Image
Hola, como había mencionado en posts anteriores, actualizaría a Apex 4.1, sin embargo queria hacerlo en Kubuntu, pero me quedo grande la instalación, 12.04 me ponía el discipador a toda velocidad y una versión anterior no me reconocía el Disco Duro, entonces finalmente lo tuve que instalar en Windows. En esta ocasión encontré las instrucciones muy bien explicadas, aunque en ingles, en esta página y no presento ningún error, lo instale en Oracle 11G XE. Upgrading to APEX 4.1 on XE 11g Solo unas observaciones adicionales y es que en esta página tienen intalado Oracle en Linux, entonces cambian algunas cosas para Windows. descomprimí el .zip en el directorio C:\Apex4.1.1 por lo tanto antes de conectarme como sys, me movia al directorio C:\Apex4.1.1\apex y en este ejecutaba los Scripts. En el ultimo Script, el de las imágenes, lo ejecute con @apxldimg.sql C:\apex_4.1.1 Y finalmente para arreglar el link de "Geting Started" Damos click derecho en el y seleccio...

Recuperar Contraseña del workspace Internal en Apex 4

Image
Hol,a hoy tuve que volver a usar un apex 4.0 que tenia en una máquina virtual, el cual no usaba desde hace uff... por eso obviamente se me olvido la clave del workwspace Internal :P, entonces busque como restaurarla, afortunadamente no se me había olvidado la clave del dba. Los pasos los saque de estos 2 sitios How to Reset the Internal Workspace Password and Apex/Flows Schema. APEX Password Reset Script. Básicamente lo que debemos hacer es ingresar como dba y ejecutar un script que restaura la clave del workspace Internal. como dice en la primera página, el script se llama apxchpwd.sql y en mi caso, en el cual uso Oracle 11g XE, este esta ubicado en C:\oraclexe\app\oracle\product\11.2.0\server\apex entonces lo primero que hacemos es abrir una consola (win + r > cmd > enter) e ir al sitio donde esta el script > cd C:\oraclexe\app\oracle\product\11.2.0\server\apex luego ejecutar sqlplus como sysdba > sqlplus sys as sysdba Aqui nos pide la clave del sys dba, la ingre...