29 de septiembre

Si se establece el programa para un motor (es decir, la base de datos), podemos dejar que el programa ya estaba allí para hacer algunas tareas.

Un buen ejemplo de cómo la fecha de cálculo. Al igual que en Java, una "incautación" se puede ser muy fácil para Oracle en la consulta de bases de datos (usando SQL) hacer.

Si lo desea, por ejemplo, la diferencia de tiempo entre ahora y el final del mes se determinará, la posible solución siguiente:

  , SELECT SYSDATE "hoy",
    "Monatsende" , LAST_DAY (SYSDATE) "de fin de mes",
    SYSDATE "Tage bis zum Monatsende" LAST_DAY (SYSDATE) - SYSDATE "días hasta el final del mes"
    FROM DUAL;

 Día de hoy Monatsen hasta el final del mes
 ---------------------------------------
 09 30 . 09 . 09 1 29a 09a 30a 09a 09 09 1 

El único inconveniente es la función de SQL no LAST_DAY en cualquier sistema de base de datos.

gklinkmann escrito por \ \ tags:

16 de septiembre

Una de las mejores características de la base de datos de Oracle es la capacidad de vincular dos de las otras bases de datos remotas a través de un enlace de base de datos.
Consultas de Sun en la mesa no se distancia un problema:

  FROM tabellenname@dblinkname; SELECT * FROM nombretabla @ dblinkname; 

Lo que todavía no saben que esto sólo funciona siempre y cuando no la alabanza en la tabla (las columnas de tipo CLOB o BLOB) están incluidos. Si aún así, se obtiene un 992 ORA-22 no puede utilizar localizadores de LOB seleccionados de las tablas remotas.

De acuerdo con Oracle sólo se permiten con la alabanza a distancia a saber, las siguientes declaraciones:

  * FROM table1@remote_site; CREATE TABLE t AS SELECT * FROM tabla1 @ remote_site;
 * FROM table1@remote_site; INSERT INTO t SELECT * FROM tabla1 @ remote_site;
 lobcol = ( SELECT lobcol FROM table1@remote_site ) ; ACTUALIZACIÓN t SET lobcol = (SELECT FROM tabla1 lobcol remote_site @);
 INSERT INTO tabla1 remote_site @ ...
 ACTUALIZACIÓN tabla1 @ remote_site ...
 DELETE FROM tabla1 @ remote_site ... 

Por otra parte, se prohíbe:

  table1@remote_site; SELECT FROM tabla1 lobcol remote_site @;
 type1 . lobattr FROM INSERT INTO SELECT lobtable tipo 1. Lobattr DE 
     @ Tabla1 remote_site;
 getlength ( lobcol ) FROM table1@remote_site; . SELECT DBMS_LOB GetLength (lobcol) remote_site FROM tabla1 @; 

¿Qué puede hacer?

En binario alabanza (por ejemplo, imágenes) que hay, en mi opinión, ninguna otra manera que con las declaraciones anteriores (como crear, actualizar) en la copia de base de datos local.
Para el acceso de lectura a la alabanza de caracteres (por ejemplo, los textos largos), puede ser suficiente para convertir los datos a la base de datos remota utilizando una función al tipo de datos VARCHAR2 y encapsular una vista que utilice esta función para el exterior. Tal vez algo como esto:

base de datos remota:

  CREATE OR REPLACE VIEW viw_clob_tabelle
 AS
 SELECT col1
 substr ( clobSpalte , 4000 , 1 ) clobText , DBMS_LOB. Substr (clobSpalte, 4000, 1) clobText
 DE clobTabelle; 

base de datos local:

  clobText FROM viw_clob_tabelle@dblinkname; SELECT col1 clobText, DE dblinkname viw_clob_tabelle @; 

Sin embargo, mientras que sólo los primeros 4000 caracteres del CLOB es para ser leído, porque esa es la limitación de la longitud del tipo de datos VARCHAR2, por dbms_lob.substr se devuelve. Pero a menudo esto es suficiente.

gklinkmann escrito por \ \ tags:

07 de mayo

La marca de tiempo Unix (que se utiliza en muchas aplicaciones) y el formato de Oracle fecha es por desgracia muy diferente. Mientras los segundos Unix 01/01/1970, a partir de los recuentos con el calendario de Oracle que ya el año 4000 aC. Acerca de. 2 veces al año, lo que necesito esta conversión, y cada vez me pregunto cómo era. Hoy en día vale la pena para mí una entrada de blog.
Existen diferentes enfoques para pasar de la marca de tiempo Unix de formato de fecha de Oracle. Aquí hay dos opciones:

  TO_DATE ( '19700101000000' , 'YYYYMMDDHH24MISS' ) SELECT TO_CHAR (TO_DATE ('19700101000000 ',' YYYYMMDDHH24MISS ')
    1094165422 , 'SECOND' ) , 'dd.mm.yyyy hh24:mi' ) datum NUMTODSINTERVAL + (1094165422, 'segundo'), 'dd.mm.aaaa HH24: MI') la fecha
 De la doble;

 2004 22 : 50 02 09 2004 22 .. 50 

No hay ninguna función ready-made con el error manejando aquí .

Si usted pide a Tom que asktom.oracle.com , por lo que también se encuentra una solución para las diferentes zonas horarias:

  - Normal
 to_date ( '01011970' , 'ddmmyyyy' ) SELECT to_char (to_date ('01011970 ',' ddmmaaaa ') 
    / 24 / 60 / 60 * 1094165422 , 'dd.mm.yyyy hh24:mi' ) FROM dual + 1/24/60/60 * 1094165422, 'dd.mm.aaaa HH24: MI') de la doble

 2004 22 : 50 02 09 2004 22 .. 50

 - Con una zona horaria diferente
 new_time ( to_date ( '01011970' , 'ddmmyyyy' ) SELECT to_char (new_time (to_date ('01011970 ',' ddmmaaaa ') 
    / 24 / 60 / 60 * 1094165422 , 'GMT' , 'EDT' ) , 'dd.mm.yyyy hh24:mi' ) FROM dual + 1/24/60/60 * 1094165422, 'GMT', 'EDT'), 'dd.mm.aaaa HH24: MI') de la doble

 2004 18 : 50 02 09 2004 18 .. 50 

gklinkmann escrito por \ \ tags: ,

16 de abril

log4j se encuentra en el entorno Java a la "cuasi - estándar" para grandes aplicaciones de registro. Básicamente, cualquier cosa es posible con Java. Pero si usted trabaja con una base de datos de Oracle, es a veces mejor rendimiento con ciertas características en PL / SQL (lenguaje de programación de base de datos de Oracle) para poner en práctica.
Gracias log4plsql no hay que renunciar a la comodidad familiar a la salida de mensajes de registro.
Seguir leyendo »

gklinkmann escrito por \ \ tags: