Commit dentro de uma Procedure
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..
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
Curtidas 0
Respostas
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+
-- reformule seu processo. tabelas temporárias não são algo ´simpático´ a sistemas cliente/servidor.
T+
GOSTEI 0
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
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
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
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+
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