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] >