Boa tarde, esse script sql estou tentando rodar num banco oracle, so que ele
nao funciona alguem pderia me dizer o que ha de errado?
obrigado.


-----------------------------------------------------------------------------------------------------
--Declaração das variáveis que serão utilizadas no processo
-----------------------------------------------------------
declare @data  datetime
declare @papel  char(12)
declare @cliente char(15)
declare @corretora char(9)
declare @QtDevolTomador decimal
declare @QtEmprTomador decimal
declare @Quantidade decimal
declare @QtDispComprada decimal
------------------------------------------------------------------------------------------------------
--Colocar aqui a data o papel e o cliente que será corrigido
------------------------------------------------------------
set @data = TO_DATE('01-APR-2009')
set @papel = 'ALLL11'
set @cliente = '15283'
------------------------------------------------------------------------------------------------------
-------------------------------
--Início do Script de correção
-------------------------------
select @corretora = cd_custodiante_rv
from cli_bas
where codcli = @cliente
select 'Corretora centralizadora do cliente ---> ', @corretora
-------------------------------------------------------------------------------------------------------
select 1
from sac_rv_pos_emprestimo
where clcli_cd = @cliente
and dt_posicao = @data
and ( rvcor_cd = @corretora )
and rvpap_cd = @papel
--------------------------------------------------------------------------------------------------------
if @@ROWCOUNT > 0 and isnull(@corretora,'') <> '' and
ltrim(rtrim(@corretora)) <> ''
BEGIN
 select 'Linha apagada da sac_rv_pos_emprestimo --->', *
 from sac_rv_pos_emprestimo
 where clcli_cd = @cliente
 and dt_posicao = @data
 and ( rvcor_cd <> @corretora )
 and rvpap_cd = @papel
 delete sac_rv_pos_emprestimo
 where clcli_cd = @cliente
 and dt_posicao = @data
 and ( rvcor_cd <> @corretora )
 and rvpap_cd = @papel
End
--------------------------------------------------------------------------------------------------------
--|| BUSCA a Quantidade de EMPRESTIMOS TOMADOR ||--
---------------------------------------------------
SELECT @QtEmprTomador = isnull( sum( AA.QT_MOVIMENTADA ),0 )
FROM SAC_RV_EMPRESTIMO_ACOES AA
WHERE AA.SG_OPERACAO = 'E'
AND AA.IC_TIPO_MOVIMENTO = 'T'
AND AA.CLCLI_CD = @cliente and AA.RVPAP_CD = @papel and AA.DT_MOVIMENTO <=
@data
group by AA.CLCLI_CD, AA.RVPAP_CD
---------------------------------------------------------------------------------------------------------
--|| BUSCA a Quantidade de Devoluções de EMPRESTIMOS TOMADOR ||--
-----------------------------------------------------------------
Select @QtDevolTomador = isnull( SUM(AA.QT_MOVIMENTADA), 0 )
FROM SAC_RV_EMPRESTIMO_ACOES AA
WHERE AA.SG_OPERACAO in ( 'D','T')
AND AA.IC_TIPO_MOVIMENTO = 'T'
AND AA.CLCLI_CD = @cliente
AND AA.RVPAP_CD = @papel
AND AA.DT_MOVIMENTO <= @data
group by AA.CLCLI_CD, AA.RVPAP_CD
---------------------------------------------------------------------------------------------------------
--|| BUSCA a Quantidade TOTAL ||--
----------------------------------
SELECT @Quantidade = isnull( QTDDISP, 0 )
FROM RV_POS
WHERE CODCLI = @cliente
AND DATAPOS = @data
AND CODPAP = @papel
---------------------------------------------------------------------------------------------------------
--Calcula a QTD disponível
--|| Qt Disponivel = Quantidade Total - ( Qt de emprestimos tomadores - Qt
de Devoluções Tomadoras ) ||--
---------------------------------------------------------------------------------------------------------
set @QtDispComprada = @Quantidade - ( @QtEmprTomador - @QtDevolTomador )
---------------------------------------------------------------------------------------------------------
UPDATE SAC_RV_POS_EMPRESTIMO SET
--SAC_RV_POS_EMPRESTIMO.QT_DISP_COMPRADA = ( SELECT QTDDISP
--      FROM RV_POS
--      WHERE CODCLI =  SAC_RV_POS_EMPRESTIMO.CLCLI_CD
--      AND DATAPOS =  SAC_RV_POS_EMPRESTIMO.DT_POSICAO
--      AND CODPAP = SAC_RV_POS_EMPRESTIMO.RVPAP_CD
--      AND CODCOR = SAC_RV_POS_EMPRESTIMO.RVCOR_CD) ,
SAC_RV_POS_EMPRESTIMO.QT_DISP_COMPRADA = @QtDispComprada,

SAC_RV_POS_EMPRESTIMO.QT_BLOQ_COMPRADA = (SELECT QTDBLOQ
         FROM RV_POS
        WHERE CODCLI = SAC_RV_POS_EMPRESTIMO.CLCLI_CD
          AND DATAPOS = SAC_RV_POS_EMPRESTIMO.DT_POSICAO
          AND CODPAP = SAC_RV_POS_EMPRESTIMO.RVPAP_CD
          AND CODCOR = SAC_RV_POS_EMPRESTIMO.RVCOR_CD),
SAC_RV_POS_EMPRESTIMO.VL_CUSTO_MEDIO_TOTAL = (SELECT VL_PRECO_HIST
      FROM SAC_RV_CUSTOS
            WHERE CLCLI_CD = SAC_RV_POS_EMPRESTIMO.CLCLI_CD
       AND DT = SAC_RV_POS_EMPRESTIMO.DT_POSICAO
       AND RVPAP_CD = SAC_RV_POS_EMPRESTIMO.RVPAP_CD),
SAC_RV_POS_EMPRESTIMO.VL_CUSTO_MEDIO_TOTAL_COR = (SELECT VL_PRECO_CORHIST
          FROM SAC_RV_CUSTOS
         WHERE CLCLI_CD = SAC_RV_POS_EMPRESTIMO.CLCLI_CD
           AND DT = SAC_RV_POS_EMPRESTIMO.DT_POSICAO
           AND RVPAP_CD = SAC_RV_POS_EMPRESTIMO.RVPAP_CD),
SAC_RV_POS_EMPRESTIMO.QT_DISP_TOMADA =  isnull( (SELECT SUM(QT_EMPRESTIMO)
         FROM SAC_RV_EM_POS PP,
       SAC_RV_EMPRESTIMO_ACOES AA
        WHERE PP.ID_MOVIMENTO = AA.ID_MOVIMENTO
          AND AA.RVPAP_CD = SAC_RV_POS_EMPRESTIMO.RVPAP_CD
          AND AA.CLCLI_CD = SAC_RV_POS_EMPRESTIMO.CLCLI_CD
          AND PP.DT_POSICAO = SAC_RV_POS_EMPRESTIMO.DT_POSICAO
          AND AA.SG_OPERACAO = 'E'
          AND AA.IC_TIPO_MOVIMENTO = 'T'), 0 ),
SAC_RV_POS_EMPRESTIMO.QT_BLOQ_TOMADA = 0,
SAC_RV_POS_EMPRESTIMO.QT_TOMADA_DEVIDA = isnull( (SELECT SUM(QT_EMPRESTIMO)
          FROM SAC_RV_EM_POS PP,
        SAC_RV_EMPRESTIMO_ACOES AA
         WHERE PP.ID_MOVIMENTO = AA.ID_MOVIMENTO
           AND AA.RVPAP_CD = SAC_RV_POS_EMPRESTIMO.RVPAP_CD
           AND AA.CLCLI_CD = SAC_RV_POS_EMPRESTIMO.CLCLI_CD
           AND PP.DT_POSICAO = SAC_RV_POS_EMPRESTIMO.DT_POSICAO
           AND AA.SG_OPERACAO = 'E'
           AND AA.IC_TIPO_MOVIMENTO = 'T'), 0 ),
SAC_RV_POS_EMPRESTIMO.QT_VENDIDA = 0
WHERE CLCLI_CD = @cliente
AND DT_POSICAO = @data
AND RVCOR_CD = @corretora
AND RVPAP_CD = @papel
-----------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------
select 'Linha Alterada da sac_rv_pos_emprestimo --->', *
from sac_rv_pos_emprestimo
where clcli_cd = @cliente
and dt_posicao = @data
AND RVCOR_CD = @corretora
and rvpap_cd = @papel



-- 
Raphael Costa


[As partes desta mensagem que não continham texto foram removidas]

Responder a