Vai al contenuto

F_GET_OSPITI

Codice Sorgente

```sql FUNCTION "F_GET_OSPITI" ( p_id_evento IN NUMBER ) RETURN t_det_ospiti_tab PIPELINED AS

v_data          DATE;
v_location      VARCHAR2(100);
v_cliente       VARCHAR2(100);
v_descrizione   VARCHAR2(100);
v_ora_cerimonia VARCHAR2(10);
v_ora_evento    VARCHAR2(10);
v_tot_adulti    NUMBER;
v_tot_kinder    NUMBER;
v_tot_baby      NUMBER;
v_tot_staff     NUMBER;
v_tot_invitati  NUMBER;
v_allergie      VARCHAR2(4000);
v_torta         VARCHAR2(1000);
v_confettata    VARCHAR2(100);
v_stampa_menu   VARCHAR2(100);
v_angoli        VARCHAR2(1000);
v_extra_info    VARCHAR2(1000);
v_note_adulti   VARCHAR2(1000);
v_note_kinder   VARCHAR2(1000);
v_note_baby     VARCHAR2(1000);
v_note_staff    VARCHAR2(1000);

BEGIN BEGIN v_tot_adulti := 0; v_tot_kinder := 0; v_tot_baby := 0; v_tot_staff := 0; v_tot_invitati := 0; v_angoli := 0; v_note_adulti := ''; v_note_kinder := ''; v_note_baby := ''; v_note_staff := '';

    --ospiti
    SELECT
        nvl(SUM(o.numero),
            0)
    INTO v_tot_adulti
    FROM
        eventi_det_ospiti o
    WHERE
            o.id_evento = p_id_evento
        AND o.cod_tipo_ospite = 8; -- adulti

    BEGIN
        SELECT
            o.note
        INTO v_note_adulti
        FROM
            eventi_det_ospiti o
        WHERE
                o.id_evento = p_id_evento
            AND o.cod_tipo_ospite = 8; -- adulti

    EXCEPTION
        WHEN no_data_found THEN
            NULL;
    END;

    SELECT
        nvl(SUM(o.numero),
            0)
    INTO v_tot_kinder
    FROM
        eventi_det_ospiti o
    WHERE
            o.id_evento = p_id_evento
        AND o.cod_tipo_ospite = 5;  --Kinder

    BEGIN
        SELECT
            o.note
        INTO v_note_kinder
        FROM
            eventi_det_ospiti o
        WHERE
                o.id_evento = p_id_evento
            AND o.cod_tipo_ospite = 5;  --Kinder

    EXCEPTION
        WHEN no_data_found THEN
            NULL;
    END;

    SELECT
        nvl(SUM(o.numero),
            0)
    INTO v_tot_baby
    FROM
        eventi_det_ospiti o
    WHERE
            o.id_evento = p_id_evento
        AND o.cod_tipo_ospite = 6; --   Baby

    BEGIN
        SELECT
            o.note
        INTO v_note_baby
        FROM
            eventi_det_ospiti o
        WHERE
                o.id_evento = p_id_evento
            AND o.cod_tipo_ospite = 6; --   Baby

    EXCEPTION
        WHEN no_data_found THEN
            NULL;
    END;

    SELECT
        nvl(SUM(o.numero),
            0)
    INTO v_tot_staff
    FROM
        eventi_det_ospiti o
    WHERE
            o.id_evento = p_id_evento
        AND o.cod_tipo_ospite = 7; --   Staff

    BEGIN
        SELECT
            o.note
        INTO v_note_staff
        FROM
            eventi_det_ospiti o
        WHERE
                o.id_evento = p_id_evento
            AND o.cod_tipo_ospite = 7; --   Staff

    EXCEPTION
        WHEN no_data_found THEN
            NULL;
    END;

    SELECT
        nvl(e.tot_ospiti, 0)
    INTO v_tot_invitati
    FROM
        eventi e
    WHERE
        e.id = p_id_evento;

    PIPE ROW ( t_det_ospiti_row(p_id_evento, v_tot_adulti, v_tot_kinder, v_tot_baby, v_tot_staff,
                               v_tot_invitati, v_note_adulti, v_note_kinder, v_note_baby, v_note_staff) );

EXCEPTION
    WHEN OTHERS THEN
        NULL;
END;

RETURN;

END;```