Re: [oracle_br] Nowait - Resource

2006-01-20 Por tôpico Marcio Portes
Voce está usando uma sessão só?
Para reproduzir lock, voce precisa usar no mínimo 2 sessões.

On 1/20/06, Marcelo Cauduro <[EMAIL PROTECTED]> wrote:
>
> Pessoal, estou tentando usar o NOWAIT para não permitir o update em uma
> determinada linha que
> estará em processamento.
>
> Mas para testes fiz um procedimento que abre dois cursores que dão lock na
> linha, mas ai é que ta o problema.,
> ele permite abrir os dois cursores que dao lock na mesma linha, ...
>
> mas pensei que o for update nào deixa-se...
>
> não era para travar ? dar resource busy...
>
> Meu oracle é 8i.
>
> prompt --> Criacao das tabelas
>
> create table teste_nowait ( a number);
>
> insert into teste_nowait values (1)
>
> prompt --> Ai vai o teste :
>
> declare
>
>   --prompt --> Cria primeiro cursor
>
>   cursor i is select a from teste_nowait where a =1 for update OF a
> NOWAIT;
>
>   --prompt --> Cria segundo cursor
>
>   cursor i2 is select a from teste_nowait where a =1 for update OF a
> NOWAIT;
>
>   --prompt --> Declara variaveis
>   cursor1 i%rowtype;
>   cursor2 i2%rowtype;
>
> begin
>
>   --prompt --> Abre os dois cursores
>
>   open i;
>   open i2;
>
>   --prompt --> Obtem dados
>
>   fetch i into cursor1;
>   fetch i2 into cursor2;
>
>   --prompt --> Realiza alteracoes
>
>   if i2%found then
> update teste_nowait
> set a=cursor2.a+1
> where current of i2;
>   END IF;
>
>   if i%found then
> update teste_nowait
> set a=cursor1.a+1
> where current of i;
>   END IF;
>
>   rollback;
>
>   close i;
>   CLOSE I2;
>
> end;
>
>
> [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/
>
> --_
> Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


--
--
Marcio Portes
http://mportes.blogspot.com


[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/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
http://br.yahoo.com/info/utos.html

 




[oracle_br] Nowait - Resource

2006-01-20 Por tôpico Marcelo Cauduro
Pessoal, estou tentando usar o NOWAIT para não permitir o update em uma
determinada linha que
estará em processamento.

Mas para testes fiz um procedimento que abre dois cursores que dão lock na
linha, mas ai é que ta o problema.,
ele permite abrir os dois cursores que dao lock na mesma linha, ...

mas pensei que o for update nào deixa-se...

não era para travar ? dar resource busy...

Meu oracle é 8i.

prompt --> Criacao das tabelas

create table teste_nowait ( a number);

insert into teste_nowait values (1)

prompt --> Ai vai o teste :

declare

  --prompt --> Cria primeiro cursor

  cursor i is select a from teste_nowait where a =1 for update OF a NOWAIT;

  --prompt --> Cria segundo cursor

  cursor i2 is select a from teste_nowait where a =1 for update OF a NOWAIT;

  --prompt --> Declara variaveis
  cursor1 i%rowtype;
  cursor2 i2%rowtype;

begin

  --prompt --> Abre os dois cursores

  open i;
  open i2;

  --prompt --> Obtem dados

  fetch i into cursor1;
  fetch i2 into cursor2;

  --prompt --> Realiza alteracoes

  if i2%found then
update teste_nowait
set a=cursor2.a+1
where current of i2;
  END IF;

  if i%found then
update teste_nowait
set a=cursor1.a+1
where current of i;
  END IF;

  rollback;

  close i;
  CLOSE I2;

end;


[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/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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:
http://br.yahoo.com/info/utos.html