Blana lucre

Povestea noptilor pierdute
RSS

SQL Server - Autogenerated code

clock December 1, 2009 01:38 by author nelutu

Salut,

Sa nu credeti ca numai oamenii fac greseli cand programeaza... uite ca si codul autogenerat de sql stie sa dea cu bata-n balta (nu ca n-ar fi fost programat tot de un om).

 



Very deterministic

clock July 1, 2009 05:58 by author djonexx

"Salut,

Cautand prin cod la lucru am dat peste functia asta foarte interesanta si m-am gandit direct la tine.

Functia returneaza 1 daca in tabela vf_su_pos exista un record cu valoarea coloanei no_pos_rgp egala cu cea a parametrului si 0 altfel.

Comentariile sunt in franceza ... daca trebe le traduc ;)
...


CREATE OR REPLACE FUNCTION pc_bas_is_pos_rgp (p_no_pos VARCHAR2)
RETURN NUMBER
DETERMINISTIC
IS
    v_version          su_ano_his.version%TYPE := '@(#) VERSION 01a $Revision$';
    v_nom_obj          su_ano_his.nom_obj%TYPE := 'pc_bas_is_pos_rgp';
    v_etape            su_ano_his.txt_ano%TYPE := 'Declare';
    v_cod_err_su_ano    su_ano_his.cod_err_su_ano%TYPE := NULL;
    err_except          EXCEPTION;
    v_ret              NUMBER := 0; -- variable de retour.
    v_is_pos_rgp        BOOLEAN := FALSE; -- variable indiquant si c'est un poste de regroupement.

    -- ----------------------
    -- Curseur permettant de recuperer les postes regroupes sous le poste p_no_pos.
    -- ----------------------
    CURSOR c_pos_rgp (x_no_pos su_pos.no_pos%TYPE) IS
        SELECT no_pos
          FROM vf_pc_pos
        WHERE no_pos_rgp = x_no_pos;

    r_pos_rgp          c_pos_rgp%ROWTYPE;

BEGIN
    v_etape := '-- Debut --';
    IF su_global_pkv.v_niv_dbg >= 3 THEN
        su_bas_put_debug(v_nom_obj||' : p_no_pos = ' || p_no_pos);
    END IF;

    v_etape := '-- Rch si il existe un(des) poste(s) regroupe sous le poste p_no_pos --';
    FOR r_pos_rgp IN c_pos_rgp(p_no_pos)
    LOOP
        EXIT WHEN v_is_pos_rgp = TRUE;
        IF v_is_pos_rgp <> TRUE THEN
            v_is_pos_rgp := TRUE;
        END IF;
    END LOOP;

    IF v_is_pos_rgp = TRUE THEN
        v_ret := 1;
    ELSE
        v_ret := 0;
    END IF;

    RETURN v_ret;
END;
"

Este musai.



Aci lucre blana

Avem un scop: sa afisam perle, mostre ale logicii infailibile din IT din cauza carora stam la servici mai mult decat e nevoie.

Cum poti contribui si tu:
- Trimite blana zilnica la blana [at] blana-lucre.ro Smile
sau
- Cere un cont de editor, trimitand mail la blana [at ] blana-lucre.ro

Sign in