[firebase-br] Usando When Do
Valdir Marcos
valdir.marcos em ig.com.br
Qua Out 12 12:50:49 -03 2005
Para solucionar um problema igual ao seu, eu criei um campo na tabela de
Empresas, e uso uma SP para fornecer o número correto de seqüência.
Tenho outras tabelas com 50 mil registros sem problemas de performance nessa
técnica.
Um outra alternativa com performance, teoricamente, ainda melhor seria vc
criar uma tabela com 'números passados disponíveis', que seria populada um
ou duas vezes por dia, e consultada 24h.
/**********************************************************/
/* P031 - Procedure sp_Colaborador */
/**********************************************************/
Set Term ^;
Create Procedure sp_Colaborador (iEmpresa integer)
Returns ( iColaborador integer)
as
Declare Variable iTemporario Integer;
begin
iTemporario = 1;
for Select CodCol From Colaboradores
Where CodEmp = :iEmpresa
Order By CodCol
Into :iColaborador
do
begin
if (iTemporario < iColaborador) then
Leave;
iTemporario = iTemporario + 1;
end
if (iTemporario < iColaborador) then
iColaborador = iTemporario;
else
begin
Select Colaborador From Empresas
Where CodEmp = :iEmpresa
Into :iColaborador;
iColaborador = iColaborador + 1;
Update Empresas
Set Colaborador = :iColaborador
Where CodEmp = :iEmpresa;
end
end^
Set Term ^;
Commit;
/**********************************************************/
Um abraço,
Valdir
----- Original Message -----
From: "Alisson" <arsuart em uol.com.br>
To: <lista em firebase.com.br>
Sent: Tuesday, October 11, 2005 6:26 PM
Subject: [firebase-br] Usando When Do
> eae pessoal..
> tenho uma duvida q eh o seguinte..
> quando uso o When Any Do
> em uma SP...
>
> eu fiz uma condição para ser executada dentro desse any..
>
> mas percebi q quando acontece uma excessao, ele ignora a mensagem q eu
> escrevi no exception e manda um erro de SQL ERROR ou coisa do tipo..
> nao tenho mesmo como mostrar meu erro de excessao neh.../????
>
> essa eh minha duvida.. pq eu queria fazer o seguinte..
>
> When Any do
> Begin
> If (:Tipo = 'B') Then
> If (:Cod_Movimento <> 0) Then
> Execute Statement
> 'SET GENERATOR GEN_MOVIMENTOBANCARIO_ID TO
> (:Cod_Movimento -1);';
> Exception;
> Exit;
> End
>
> Quero q quando acontecer uma excessao... meu Generator seja voltado ao
> numero q estava.. para nao perder codigo...
> e mesmo eu usando o exception lah entre o when.. nao adianta.. nao traz a
> mensagem de excessao q eu queria.. ou melhor q fiz..!!!!
>
> realmente nao tem jeito neh..???
> alguem tem alguma ideia legal sobre como controlar os IDs do generator..
> pra nao ficar perdendo..!!!!???
>
> obrigado pela ajuda desde jah..!!!!
>
> --
> Abraços
>
> Alisson
>
>
>
>
>
--------------------------------------------------------------------------------
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista