[firebase-br] Problema com Select em Procedure

Anderson Miranda Barrozo andersonpaduarj em gmail.com
Sex Abr 11 09:40:01 -03 2008


Grande,

Qual é a finalidade desta procedure ? Assim ficaria melhor para entender a
logica.

Anderson



Em 11/04/08, Isael Faria Junior <isael em stetika.com.br> escreveu:
>
> Pessoal,
>
> Tenho o seguinte  procedure.
>
> ---
>
> CREATE PROCEDURE SPR_ORDEM_CPR_FORNECEDOR (
>    COD_ORD_COM INTEGER,
>    DATA_INICIAL DATE,
>    DATA_FINAL DATE,
>    ID_FORNECEDOR INTEGER,
>    TIPO VARCHAR(1))
> AS
> DECLARE VARIABLE ID_PRODUTO INTEGER;
> DECLARE VARIABLE VAL_UNITARIO DOUBLE PRECISION;
> DECLARE VARIABLE PRODUTO VARCHAR(50);
> DECLARE VARIABLE CODIGO INTEGER;
> DECLARE VARIABLE CODENA VARCHAR(15);
> DECLARE VARIABLE ID_LOC_ESTQ INTEGER;
> DECLARE VARIABLE SALDO FLOAT;
> DECLARE VARIABLE VENDA FLOAT;
> DECLARE VARIABLE COMPRAS FLOAT;
> DECLARE VARIABLE ENTRADAS FLOAT;
> DECLARE VARIABLE FONTE_ODBC VARCHAR(30);
> DECLARE VARIABLE SAIDAS FLOAT;
> DECLARE VARIABLE ID_UNIDADE INTEGER;
> DECLARE VARIABLE QTDMIN FLOAT;
> DECLARE VARIABLE UNIDADE VARCHAR(3);
> DECLARE VARIABLE VALOR FLOAT;
> begin
> SELECT ID_LOC_CPR,FONTE_ODBC FROM PARAMETROS INTO
> :id_loc_estq,:fonte_odbc;
>
> FOR SELECT COD_PRODUTO FROM CAT_PRO_FOR WHERE COD_FORNECEDOR =
> :id_fornecedor
>   INTO :id_produto DO
> BEGIN
>
>   SELECT SUM(QTD_MOV) FROM MOVEST WHERE ID_PRODUTO = :id_produto AND
>    DAT_MOV < :data_final AND ID_LOCAL_ENT = :id_loc_estq AND
>    SUBSTR(SIT_TIPO_LANC,1,1) = 'E' INTO :entradas;
>
>    if (:entradas IS NULL) then
>        entradas = 0;
>
>   SELECT SUM(QTD_MOV) FROM MOVEST WHERE ID_PRODUTO = :id_produto AND
>    DAT_MOV < :data_final AND ID_LOCAL_SAI = :id_loc_estq AND
>    SUBSTR(SIT_TIPO_LANC,1,1) = 'S' INTO :saidas;
>
>    if (:saidas IS NULL) then
>        SAIDAS = 0;
>
>    SALDO = ENTRADAS - SAIDAS;
>
>    IF (:tipo = 'N') THEN
>    BEGIN
>     select
>       sum(qtd_item)
>     from ite_pro_nota
>     where id_tipo_operacao
>      in (select id_tipo_operacao from tipo_operacao where sit_tip_op =
> 'V')
>     and id_nota
>      in (select id_nota from notas_fiscais where dat_emissao between
>       :data_inicial and :data_final)
>     AND ID_PRODUTO = :id_produto into :venda;
>    END
>    IF (:tipo = 'P') THEN
>    BEGIN
>      SELECT
>       SUM(QTD_ITEM)
>        FROM item_prod_ped
>       WHERE ID_TIPO_OPERACAO
>       IN (SELECT ID_TIPO_OPERACAO FROM tipo_operacao WHERE SIT_TIP_OP =
> 'V')
>      AND ID_PEDIDO
>       IN (SELECT ID_PEDIDO FROM PEDIDO WHERE DAT_EMISSAO between
>        :data_inicial AND :data_final)
>      AND ID_PRODUTO = :id_produto INTO :venda;
>    END
>
>    IF (:VENDA IS NULL) THEN
>    BEGIN
>     venda = 0;
>    END
>
>    if (:fonte_odbc = 'DUGS') then
>    BEGIN
>     SELECT PRCUSTO,DESCRICAO,CODBAR,QTDMIN,ID_UNIDADE FROM PRODUTOS WHERE
> ID_PRODUTO = :id_produto
>      INTO :val_unitario,:produto,:codena,:qtdmin,:id_unidade;
>    END
>    ELSE
>    BEGIN
>     SELECT PRCUSTO,DESCRICAO,ID_PRODUTO,QTDMIN,ID_UNIDADE FROM PRODUTOS
> WHERE ID_PRODUTO = :id_produto
>      INTO :val_unitario,:produto,:codena,:qtdmin,:id_unidade;
>    END
>
>    if (qtdmin IS NULL) then
>      qtdmin = 0;
>
>    COMPRAS = (:venda + :qtdmin) - :saldo;
>
>    SELECT SIGLA FROM UNIDADE WHERE ID_UNIDADE = :id_unidade INTO :unidade;
>
>    INSERT INTO
> ite_pro_oc(COD_ORD_OC,ID_PRODUTO,CODIGO,PRODUTO,SALDO,VAL_QTD_PRO,VAL_PRO_UNIT,
>     VENDA,VAL_TOT_IPI,ID_UNIDADE,UNIDADE) VALUES
>
> (:cod_ord_com,:id_produto,:codena,:produto,:saldo,:compras,:val_unitario,:venda,
>     0,:id_unidade,:unidade);
> END
> /* Procedure Text */
> suspend;
> end;
>
> --
>
> Onde este Select deveria me trazer o valor 1
> SELECT
>       SUM(QTD_ITEM)
>        FROM item_prod_ped
>       WHERE ID_TIPO_OPERACAO
>       IN (SELECT ID_TIPO_OPERACAO FROM tipo_operacao WHERE SIT_TIP_OP =
> 'V')
>      AND ID_PEDIDO
>       IN (SELECT ID_PEDIDO FROM PEDIDO WHERE DAT_EMISSAO between
>        :data_inicial AND :data_final)
>      AND ID_PRODUTO = :id_produto INTO :venda;
>
> O engraçado que que quando rodo esse select no sql editor o mesmo me
> monstra o valor correto, porem ao executar a procedure me tras o valor null
>
> Detalhe não tenho como debug passo a passo pois a minha versão de IBExpert
> não permite isso.
>
> Alguem pode me ajudar a solucionar esse misterio ??
>
>
>
>
> Isael Faria Junior
> Rua José Paulino 320 SL 51
> Campinas / SP
> Stetika Informática LTDA
> Fone: 3203-0340  Cel:9198-6729
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AS Informática
Anderson Miranda Barrozo
(22) 8115-8761
MSN: andersonpaduarj em hotmail.com



Mais detalhes sobre a lista de discussão lista