Evidente que não vai funcionar, pois a sintaxe do PL/SQl é ** absolutamente ** 
, ** fundamentalmente ** diferente do t-sql ..... Entre as principais que 
existem nesse script que contrariam a sintaxe pl/sql : 

 - falta de ; para se terminar os comandos
 - só um DECLARE antes das variáveis
 - falta BEGIN no começo e END; no final
 - SELECT para variável exige cláusula INTO
 - funções e operadores built-in (cmo ROWCOUNT, ISNULL, atribuição de valores 
em variáveis, etc) tem sintaxe totalmente 
diferente

==> assim, não há outra recomendação que não vc ** ESTUDAR ** um bom livro de 
PL/SQL (ou ao menos os manuais online em http://tahiti.oracle.com), aprender as 
diferenças que são muitas e re-escrever o negócio...

 []s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, raphael Costa <rcrco...@...> escreveu
>
> 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