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: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.