viernes, 19 de abril de 2013

Generar XML en Oracle Toad

SELECT XMLElement ("ALIAS"
XMLAttributes ('Atributos' AS
"ALIAS"
'Atributos' AS
"ALIAS"),
XMLForest(Campo_Tabla1, Campo_Tabla2, Campo_Tabla3)) AS "ALIAS"

FROM Nombre_Tabla
WHERE Campo_Tabla = Valor_Campo_Tabla;

Por ejemplo:

SELECT XMLElement("Empleados",
XMLAttributes('Nombre_Emp' AS
"NOMBRE",
'Numero_Emp' AS
"Numero"),
XMLForest(Id_Emp, Apellido_Emp, Salario_Emp)) AS "RESULTADO"
FROM empleados
WHERE id_departmento = 20;

jueves, 18 de abril de 2013

Crear directorios en Oracle (Privilegios y Ejemplo de Sintáxis)


Crear directorio:

Create or replace directory XML as 'c:\trabajo';
·         
       Los directorios deben crearse si las tablas externas se utilizan.
·         Creado directorios se muestran en cualquiera dba_directories o all_directories. 
·         No hay user_directories.

Otorgar privilegios:

Cuando un «directorio» ha sido creado, los privilegios leer y escribir se pueden conceder en él:

create directory XML;
Grant read, write on directory  XML to Roberto with grant option;

Ejemplo de sintáxis:

El siguiente ejemplo muestra cómo crear directorios y UTL_FILE se pueden utilizar para escribir texto en un archivo:

CREATE OR REPLACE DIRECTORY XML AS 'C:\Trabajo';
declare
  f utl_file.file_type;
begin
  f := utl_file.fopen('DIR_TEMP', 'something.txt', 'w');
  utl_file.put_line(f, 'line one: some text');
  utl_file.put_line(f, 'line two: more text');
  utl_file.fclose(f);
end;
/

Directorio Oracle PL/SQL a XML


SELECT dbms_xmlgen.GETXML( ' select  e.NUM_CUENTA "Cuenta_Contable",                                                     
                               e.DES_CUENTAESP "Descripcion"                                   
                               FROM   co_Catalogo  e                                                                                   
                               WHERE  cod_compania=01001001' ) FROM DUAL;

En este ejemplo se muestra el paquete de oracle DBMS_XMLGEN.GETXML donde se va a hacer un SELECT pero no como contenido si no como una cuerda…donde vamos a disponer de una tabla “e” con los campos que deseamos convertir en XML y su respectivo alias, donde va a existir una sentencia que debe de ser válida en la base de datos.
                           
                           
SELECT  xmlelement("CuentaContable",  xmlCONCAT   
 (xmlelement("Cuenta_Contable",e.NUM_CUENTA)                                                     
 ,xmlelement("Descripcion",e.DES_CUENTAESP)                                                       
 ,xmlelement("Moneda",e.Cod_moneda)                                                                                                                                  
 )) Registro                                                                                                      
                    FROM   co_Catalogo  e                                                                                   
                    WHERE  cod_compania= '01001001'; 

  
En este otro ejemplo observamos el XMLELEMENT que es un elemento del XML, hay que recordar que un archivo XML se divide por jerarquías, por ejemplo:

<Árbol <Ramas> </Ramas></Árbol>


En este ejemplo se le asigna al XML el nombre o alias Registro que es el que se mostrará en el respectivo archivo.

EL XMLCONCAT sirve para concatenar de un modo XML, mientras que un CONCAT simple se restringe a concatenar en forma de contenido.

Procedimiento para ejecutar un fichero Oracle en XML:

CREATE OR REPLACE PROCEDURE UsuarioOra.exportacuentas_xml (compania varchar2) IS                                                                             
CURSOR xmlcur IS                                                                                                    

SELECT  xmlelement("CuentaContable",XMLATTRIBUTES(TIP_NIVEL),
        xmlCONCAT  (xmlelement("Cuenta_Contable",e.NUM_CUENTA)                                                      
                    ,xmlelement("Descripcion",e.DES_CUENTAESP)                                                       
                    ,xmlelement("Moneda",e.Cod_moneda),
xmlelement("Movimientos",(select xmlconcat (xmlelement("fechadoc",to_Char(z.FEC_DOCUMENTO,'DD-MON-YEAR')),                                             
                  xmlelement("Monto",z.Mon_monto)
                                           )
 from CO_DETALLED Z
 where z.cod_compania=e.cod_compania
 and   z.num_cuenta=e.num_cuenta)))
 ).getStringval()Registro                                                                                                     

FROM   CO_CATALOGO  E                                                                                    
WHERE  cod_compania= compania; 
     
XMLDATA CLOB;                                                                                        
     
Cadena VARCHAR2(32767);
file1 UTL_FILE.FILE_TYPE;
                                                                                                                    
BEGIN      
      
       file1 := UTL_FILE.FOPEN('XML','prueba.xml','W',256);
       UTL_FILE.PUT_LINE(file1,''); 
       For k in xmlcur loop  
       UTL_FILE.PUT_LINE(file1, k.Registro);     
                       end loop;
 UTL_FILE.PUT_LINE(file1,'
');                                                                      
 UTL_FILE.FCLOSE(file1);                                                                
END;

lunes, 1 de abril de 2013

Crear un mantenimiento de base de datos Oracle Forms.




·         Nombre de la forma.
·         Disparadores inteligentes (pre-form, when-button-pressed, post-query).
·         Tipos de alerta de la forma.
·         Librería adjunta.
·         Bloques de datos de la forma.
·         Lienzos de la forma que muestra el diseño.
·         Editores de la forma.
·         Lista de valores con los que se llena los campos del bloque.
·         Grupo de objetos de la forma.
·         Parámetros de la forma.
·         Busca la ubicación actual del objeto.
·         Encripta código y maneja unidades de programa (paquetes).
·         Clases de propiedades de la forma.
·          Grupo de registros donde se relacionan la lista de valores.
·         Generador de reportes de la forma.
·         Atributos visuales de la forma.
·         Ventanas, se les puede asignar nombre propio.



Códigos importantes dentro de un disparador inteligente:
When-timer-expired:
Declare
            v_timer TIMER;
Begin
            v_timer := Find_Timer('ROBERTO');
           
            If NOT ID_NULL(v_timer) Then
                        :BK_DATOS.D_DES:=:SYSTEM.CURRENT_BLOCK||' '||:SYSTEM.BLOCK_STATUS;
            End If;
End;

When-new-form-instance:
DECLARE
     hour_timer TIMER;
     one_second     NUMBER(4):=1000;
BEGIN
     hour_timer:= CREATE_TIMER('roberto',one_second,REPEAT);
END;

GO_BLOCK('BK_ACTIVOS');
EXECUTE_QUERY;

Pre-form:
:GLOBAL.ACTIVO:=NULL;
:GLOBAL.COMPANIA:=NULL;

Códigos importantes dentro de un bloque de datos (triggers, ítems, relaciones):

Pre-query:
:BK_ACTIVOSINFO.NUM_ACTIVO:=:GLOBAL.ACTIVO;
:BK_ACTIVOSINFO.COD_COMPANIA:=:GLOBAL.COMPANIA;

Post-query:
DECLARE
V_DEPARTAMENTO VARCHAR2(60);
V_TIPO_ACTIVO VARCHAR2(60);

begin
            AC_K_UTILITY.ACT_P_DEP (:BK_ACTIVOSINFO.COD_DEPARTAMENTO, V_DEPARTAMENTO);
            AC_K_UTILITY.ACT_P_TIPACT(:BK_ACTIVOSINFO.COD_TIPOACTIVO,V_TIPO_ACTIVO);
            :BK_ACTIVOSINFO.D_DEPARTAMENTO:=V_DEPARTAMENTO;
            :BK_ACTIVOSINFO.D_TIPOACTIVO:=V_TIPO_ACTIVO;
            END;

When-button-pressed:
GO_BLOCK('BK_ACTIVOS');


When-button-pressed:
DECLARE
BEGIN
            :GLOBAL.ACTIVO:=:BK_ACTIVOS.NUM_ACTIVO;
                    :GLOBAL.COMPANIA:=:BK_ACTIVOS.COD_COMPANIA;
                    GO_BLOCK('BK_ACTIVOSINFO');
            DO_KEY('EXECUTE_QUERY');
            END;

Canvas:

Las canvas o lienzos es el diseño que le queramos dar a la forma.

LOV’s:

Lista de valores con los que se cargan datos de la base de datos en el campo a cual queramos que se carguen.

Record Groups:

Grupo de registros que se relacionan la lista de valores para crear registros.


Windows:

Ventanas que muestran las formas.

grupodivisoft.com