# F_GET_COSTO_ARTICOLO

## Codice Sorgente

```sql
function f_get_costo_articolo(p_cod_articolo varchar2, p_date date)
return number
as
    v_costo number := null;
begin

    -- Cerco il costo alla data
    begin
        SELECT a.costo_uni
        into v_costo
        FROM COSTI_ARTICOLI a
        where a.data_costo = p_date
        and a.cod_articolo = p_cod_articolo;
    exception when no_data_found then
        v_costo := null;
    end;

    -- Se non lo trovo prendo l'ultimo costo
    begin
        SELECT a.costo_uni
        into v_costo
        FROM COSTI_ARTICOLI a
        WHERE a.DATA_COSTO = (SELECT max(b.DATA_COSTO) FROM COSTI_ARTICOLI b where b.cod_articolo = a.cod_articolo)
        and a.cod_articolo = p_cod_articolo;
    exception when no_data_found then
        v_costo := null;
    end;

    -- se non trovo niente torno 0
    return nvl(v_costo, 0);
end;
```
