Commit dentro de uma Procedure

Firebird

02/10/2003

Caros colegas..


Não cosegui ´dar´ um COMMIT dentro de um procedure, e estou precisando da orientação de vcs e como fazer isso.

Tenho uma procedure que insere dados em uma tabela, e, após inserir é preciso acessar os dados nesta tabela para novos cálculos dentro desta mesma procedure, acontece que não estou conseguindo acessar os dados inseridos, pois preciso dar um commit, para depois poder acessar os dados e não consegui fazer isso.

[b:283f7f7790]A procedure insere dados em uma tabela temporaria e apos inserir os dados , deve utilizar estes dados que foram inseridos para novos cálculos dentro desta mesma procedure[/b:283f7f7790].

[b:283f7f7790]Tipo

begin
insere dados
end

[color=blue:283f7f7790]commit[/color:283f7f7790]

lê dados inseridos
novos calculos

end[/b:283f7f7790]


Abraços..


Siro

Siro

Curtidas 0

Respostas

Afarias

Afarias

02/10/2003

NÃO é possóvel!! stored procedures ocorrem no contexto de uma transação e não é possível controlar a transação no seu interior.

-- reformule seu processo. tabelas temporárias não são algo ´simpático´ a sistemas cliente/servidor.



T+


GOSTEI 0
Siro

Siro

02/10/2003

NÃO é possóvel!! stored procedures ocorrem no contexto de uma transação e não é possível controlar a transação no seu interior. -- reformule seu processo. tabelas temporárias não são algo ´simpático´ a sistemas cliente/servidor. T+


OK. aFARIAS.

Meu problema e que preciso pegar os resultados do primeiro ´For select´ de uma determinada tabela x outra(s) , após verificar todos os totais retornados dos registros que se repetem ou não (1,2 ou dezenas de vezes - tipo codigo do produto 001 - 2 registros com um det. preço, codigo 003 - 05 registros com um det. preço, codigo 1000 - 60 registro com um det. preço, codigo 2050 etc), e somar o preço total dos de cada registro (tipo total do registro 1000) e submeter este registro a outra condição existente nos registros retornados primeiro ´for select´, retornando os dados para o usuario..

Existe um primeira condiçao para formaçao do primeiro preço e após formado o preço tenho que veficar outra condição dos registros selecionados que originão outro preço final.


GOSTEI 0
Luizfernando777

Luizfernando777

02/10/2003

já tentou usar no evento
AfterPost
begin
if not IBTransaction1.InTransaction then
IBTransaction1.StartTransaction;

IBTransaction1.CommitRetaining;
(dataSet as TIBTable).Refresh;
end;

no ibtransaction deve estar assim
as propriedades
AutoStopAction saCommit
DefaultAction TACommit

não sei se é o que vc precisa, mas faz um teste para
verificar


GOSTEI 0
Afarias

Afarias

02/10/2003

não saquei bem o q vc quer , mas... segue uma possível forma ::


for select codigo_produto, preco, count(*) from tabela
group by codigo_produto, preco
order by codigo_produto into :cod_prod, :preco_prod, :rep do
begin
{seu código}
end;


bom, espero q ajude!


T+


GOSTEI 0
POSTAR