Mostrando entradas con la etiqueta Oracle. Mostrar todas las entradas
Mostrando entradas con la etiqueta Oracle. Mostrar todas las entradas

domingo, 2 de febrero de 2014

Año bisiesto en Oracle.

Hoy expondré una función para determinar si un año es bisiesto en Oracle. Si tienen dudas acerca del algoritmo. Lo pueden checar el mi artículo de año bisiesto en Sql server.
CREATE OR REPLACE FUNCTION esBisiesto(fecha DATE)
RETURN NUMBER
AS
 esBisiesto NUMBER(1,0) := 0;
 anio NUMBER(4,0) := TO_NUMBER(TO_CHAR(fecha, 'YYYY'),'9999'); --Extrae el anio
BEGIN

 IF anio MOD 4 = 0 AND (anio MOD 100 <> 0 OR anio MOD 400 = 0)
    THEN
  esBisiesto := 1;
    END IF;
    RETURN esBisiesto;
END;

martes, 3 de abril de 2012

Trigger en Oracle

Este es un trigger transaccional de Oracle para comunicarse a Sql Server
CREATE OR REPLACE 
TRIGGER tgrInsertaLocalizadorEnKuve
  AFTER UPDATE ON tarima
  REFERENCING NEW AS NEW
  FOR EACH ROW
DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
  vFecha DATE := SYSDATE;
  --vClaveProducto CHAR(40);
  --vClaveTipoProducto NUMBER;
BEGIN

  -- LoteInterno = noLocalizador
  -- CostoPromedio = idEstatus
  -- loteFabricante = imei
  -- loteProveedor = numeroControl
  
  --SELECT claveTipoProducto 
  --INTO vClaveTipoProducto
  --FROM producto
  --WHERE claveProducto = vClaveProducto;
  
  --IF vClaveTipoProducto = 1 THEN -- Si el producto es de tipo GPS
  IF :NEW.claveProducto IN ('1', '2', '21', '22') THEN

    INSERT INTO localizadorTemporal@hsodbcDes
    VALUES(:NEW.loteInterno, :NEW.costoPromedio,  :NEW.loteFabricante, :NEW.loteProveedor, vFecha);
    COMMIT;
    
  END IF;
  
  EXCEPTION
  WHEN OTHERS THEN
      raise_application_error(-20001,'Hubo error: '||SQLCODE||' -ERROR- '||SQLERRM);

END;