Archive for the ‘oracle’ Category

Tips: Como usar Case en Oracle

Tuesday, April 24th, 2007

Puede darse el caso de que querramos devolver un texto o valor dependiendo del dato de una columna en una tabla Oracle.

Por ejemplo

Si tenemos una tabla de nombre Empleados_Salarios con los campos
Empleado, Salario
y con valores

Agustin, 20.000
Ignacio, 1.500
Nicolás, 10.000

Y en un select queremos en vez de reflejar los valores exactos y mostrar categorías, podemos usar la sentencia CASE de Oracle como el siguiente ejemplo muestra.

Select Empleado,
CASE
when Salario when Salario >= 5.000 and Salario else ‘Salario Alto’
END Categoria_Salario
from Empleados_Salarios;

La sentencia contiene las palabras reservadas “when” para establecer las condiciones, “else” para el caso que no cumpla una de las condiciones when, y “CASE” y “END” que encierran la cláusula condicional, coloqué la palabra “Categoria_Salario” como alias de la columna de categorías.

Otro ejemplo sencillo podría ser:

Tengo una tabla de nombre Stock con 3 campos:

Material char(20),
Entradas number(10),
Salidas number(10)

Y quisiera saber los saldos positivos de Entradas - Salidas, y en el caso que las Salidas sean mayores que las Entradas, no quiero mostrar el valor negativo, sino un valor 0.
Tengo que tener en cuenta los valores nulos que pudiera tener de Entradas o Salidas

El select sería el siguiente:

Select Material,Nvl(entradas,0) Entradas, Nvl(salidas,0) Salidas,
Case Nvl(entradas,0) - Nvl(salidas,0) > 0 then Nvl(entradas,0) - Nvl(salidas,0)
else 0
End Diferencia
from Stock;

Espero que estos mini ejemplos sean de utilidad.

Fabricio De los Santos
Gerencia de Proyectos -
Consultoría GeneXus -
ERP – Sistemas de Misión Crítica - Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Error ORA-00957 GeneXus 9 Oracle Visual Basic u otros generadores duplicate column name

Wednesday, April 18th, 2007


Duplicate column name o ORA-00957 con oracle, en mi caso Visual Basic, se produjo básicamente por un error comun que puede acontecer.

Se debe basicamente a que posiblemente en el codigo tanto sea en un New o en un When Duplicate se está haciendo referencia a un atributo 2 veces por error.

Ejemplo:

New
CliCod=&CliCod
CliNom=&CliNom
CliDir=&CliDir
CliDir=&Direccion
EndNew

Tambien puede darse en un When duplicate.
Algo sencillo, error burro, pero puede pasar, generalmente cuando se copia códigos de un objeto a otro, etc.

Espero que haya sido útil.

Fabricio De los Santos
Gerencia de Proyectos -
Consultoría GeneXus -
ERP – Sistemas de Misión Crítica - Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Explain Plan Optimizar consultas sql oracle

Wednesday, October 4th, 2006

Cuando el resultado de una consulta demora demasiado y queremos saber por que, podemos ver un detalle de lo que la consulta está haciendo.

Pasos a seguir:
(probado en sql plus)

1)
alter session set sql_trace=true;

2)
explain plan for select …….

3)
select operation ||’ ‘||options||’ ‘||object_name from plan_table
connect by prior id=parent_id
start with id=1;

Info obtenida de: ADP

Fabricio De los Santos
Gerencia de Proyectos -
Consultoría GeneXus -
ERP – Sistemas de Misión Crítica - Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: core dump AIX 4.3.2 dsmc / ora:01017 - 01034

Wednesday, October 4th, 2006

Intentando correr procesos C generados con Genexus, se obtiene un error con el siguiente texto.

PCSS/SPI2 FLDS/ademonc SIG/11 FLDS/__modfini VALU/14 FLDS/exit

Encontramos que el sistema está generando un coredump

Posible problema: que la password de usuario para correr los procesos esté mal o el archivo donde se toma la password no se pueda leer y o esté corrupto.

Ejemplo de línea de archivo de coredump

ÀZ M’Ð ÿÿÿÿÿïp y•h ÿÿÿÿÿïp(BHB L ÿÿÿÿÿóP KM ÿT ” LÌ@ F8 ÷ ÷ õ0 üORA-01017: invalid username/password;

Solución colocar el archivo correcto o la password correcta dependiendo del problema

Ayuda ubicada en: Mail Archive

Palabras de búsqueda:

Trace/BPT trap(coredump)
core dump AIX 4.3.2 dsmc

Fabricio De los Santos
Gerencia de Proyectos -
Consultoría GeneXus -
ERP – Sistemas de Misión Crítica - Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: XDB connect to localhost

Wednesday, September 20th, 2006


Es un error que me ha pasado algunas veces cuando instalo Tomcat en una máquina que tiene Oracle.
Este error se debe a que oracle corre un XDB server en el puerto 8080, mismo puerto que usa Tomcat por defecto.
Las dos opciones que tenemos es
1) Cambiar el puerto por defecto de Tomcat
2) Deshabilitar el puerto del XDB en oracle. Para esto último se abre el enterprise manager, expandimos la base de datos que está instalada local y en el tag “configuracion” cambiamos el http port por 0

Nota: Hay que conectarse como sysdba a la base de datos, caso contrario no te dejará.

La info fue obtenida de:
http://www.fmepedia.com

Fabricio De los Santos
Gerencia de Proyectos -
Consultoría GeneXus -
ERP – Sistemas de Misión Crítica - Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com