funcao em select nao insere/altera/deleta
transforme em uma procedure com parametros in e out

-----Mensagem original-----
De: Gabriel Herdt [mailto:[EMAIL PROTECTED]
Enviada em: sexta-feira, 28 de abril de 2006 11:19
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Função que não funciona! porque?


Qual o erro dessa função? ela não esta retornando o valor e nem
dando o update e insert.

FUNCTION FN_GRMOVEST
  ( PR_EMPRES IN NUMBER,
    PR_CLIFOR IN NUMBER,
    PR_PRODUT IN VARCHAR2,
    PR_ESTMIN IN NUMBER,
    PR_ESTMAX IN NUMBER,
    PR_FORPRO IN NUMBER,
    PR_DTLANC IN DATE,
    PR_QTDADE IN NUMBER,
    PR_VLUNIT IN NUMBER,
    PR_TIPMOV IN NUMBER,
    PR_ENTSAI IN CHAR,
    PR_NUMDOC IN NUMBER,
    PR_UNIARM IN NUMBER,
    PR_CENCUS IN NUMBER)
  RETURN  NUMBER IS
   nESTFIS number;
   nVlCusto number;
   nVlCusMed number;
   nLancto number;
   nrownum number;
BEGIN
    Select (FN_SEMOES(PR_EMPRES))NR_LANCTO Into nLancto From dual;

    Select rownum, VL_ESTFIS, VL_CUSTO, VL_CUSMED INTO nrownum,
nESTFIS, nVlCusto, nVlCusMed
    FROM CEESTPRO
    WHERE CD_EMPRES = PR_EMPRES AND CH_PRODUT = PR_PRODUT
    AND CD_UNIARM = PR_UNIARM;

    IF PR_ENTSAI = 'S' THEN
        nESTFIS := (nESTFIS - PR_QTDADE);

        UPDATE CEESTPRO SET
        VL_ESTFIS = nESTFIS
        WHERE CD_EMPRES = PR_EMPRES AND CH_PRODUT = PR_PRODUT
        AND CD_UNIARM = PR_UNIARM;

    ELSIF PR_ENTSAI = 'E' THEN
        nESTFIS := (nESTFIS + PR_QTDADE);

        UPDATE CEESTPRO SET
        VL_ESTFIS = nESTFIS
        WHERE CD_EMPRES = PR_EMPRES AND CH_PRODUT = PR_PRODUT
        AND CD_UNIARM = PR_UNIARM;

    ELSIF nrownum = '' THEN

        Insert into CEESTPRO
        (CD_EMPRES, CH_PRODUT, CD_UNIARM, VL_ESTFIS,
        VL_ESTMIN, VL_CUSMED, VL_ESTMAX, VL_CUSTO)
        VALUES
        (PR_EMPRES, PR_PRODUT, PR_UNIARM, nESTFIS, PR_ESTMIN,
        nVlCusMed ,PR_ESTMAX, nVlCusto);

END IF;
   
    Insert into CEMOVIME
    (CD_EMPRES, DT_LANCTO, CD_CLIFOR, CD_TIPMOV, NR_LANCTO,
CH_PRODUT,
     CD_FORPRO, NR_QTDADE, VL_UNITAR, NR_DOCTO, NR_FISATU, VL_CUSMED,
     VL_CUSTO, CD_UNIARM, CD_CUSTO)
    VALUES
    (PR_EMPRES, PR_DTLANC, PR_CLIFOR, PR_TIPMOV, nLancto, PR_PRODUT,
     PR_FORPRO, PR_QTDADE, PR_VLUNIT, PR_NUMDOC, nESTFIS, nVlCusMed,
     nVlCusto, PR_UNIARM, PR_CENCUS);
    RETURN nLancto;
END;

Select fn_grmovest(1,1,'102',50,100,1,TO_DATE('28-04-
2006'),5,100,1,'E',99,1,1) from dual











----------------------------------------------------------------------------
----------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
----------------------------------------------------------------------------
----------------------------------------------______________________________
____________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o
link do mesmo para evitar trafego(pedidos) desnecessário.
Links do Yahoo! Grupos








--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDAD


Links do Yahoo! Grupos

Responder a