Bom dia pessoal,

Oracle 9i – Usado para Microsiga protheus  8.11

Estou querendo criar uma procedure que selecione os rowid´s que atendem uma
determinada condição e inicie um loop e faça o delete.


CREATE OR REPLACE  PROCEDURE  "SPDEL( nLoops OUT NUMBER ) IS
           nCount number(10) := 1;
           cursor get_recnos IS
             SELECT MAX(R_E_C_N_O_) REG
              FROM SA6010
            Begin
             open get_recnos ;
              fetch get_recnos
               into nLoops ;
             close get_recnos;
               If nLoops IS NULL then
                   nLoops := 0;
               Else
                 Loop
                    DELETE FROM SA6010 WHERE A6_FILIAL = ‘  ‘ AND R_E_C_N_O_
= nCount ;
                   nCount := nCount + 1 ;
                  Exit When nCount > nLoops ;
                 End Loop;
               end if;
           end;

Esta procedure funciona de maneira até eficiente pois o campo R_E_C_N_O_ é
chave primaria, porém sei que se eu usar o ROWID do oracle, o custo da
consulta diminui e a performance melhora mais ainda.

Queria algo assim:

SELECT ROWID FROM SA6010 WHERE A6_FILIAL = ‘ ‘
WHILE
     DELETE FROM SA6010 WHERE ROWID = ‘ID_EM_CURSOR_NO_WHILE’
Pois acredito que desta maneira, não estará havendo alocação para o rollback
, já que cada registro é deletado no momento, e cada acesso é feito por
rowid.

Se alguém tiver um exemplo parecido de como fazer , ficarei grato.



Marcelo Alberto Lauschner
Depto. De Informática
Auto Pratense Ltda
* - Fax: (0XX54) 3242-3615
* - E-mail:  <mailto:[EMAIL PROTECTED]>
[EMAIL PROTECTED]



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



--------------------------------------------------------------------------------------------------------------------------
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:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a