Fórum Rows_Affected #41585

16/01/2004

0

Tenho uma procedure que faz um update, gostaria que me retornasse o numero de registros alterados, sei que existe o comando rows_affected, mas não consigo usa-lo sempre da erro na sql. Como usa-lo dentro de uma procedure ?


Midas

Midas

Responder

Posts

21/01/2004

Afarias

Na verdade acho q não existe tal comando MIDAS (pelo menos no IB 6.0) -- o q existe é uma API para isso.

Postanto, quando vc executa um UPDATE ou DELETE ou INSERT vc pode obter o resultado no seu componente (no Delphi por exemplo)


T+


Responder

Gostei + 0

22/01/2004

Midas

Certo, saindo dá sua alçada, mas aproveitando gostaria de saber por que não me retorna o valor.

try
execproc;
dm.ibtransaction.commit;
except
trato aqui o erro;
dm.ibtransaction.rollback;
end;
i_cont:=dm.sprocedure.rows_affected; //porem retorna valor 0

entao tentei apos o execproc.
mesmo resultado. i_cont = 0;
sendo que já vi e é feito update na tabela.
Alguma idéia. ?


Responder

Gostei + 0

22/01/2004

Afarias

Infelizmente, vc só tem o resultado do ´rows affected´ quando executa um UPDATE, INSERT ou DELETE -- se estes comandos forem executados dentro de um STORED PROC (execute procedure ...), não é possível obter o valor.

-- Bom, a princípio esta ´limitação´ deve-se (acho) o fato q em um stored proc, vários comandos updates (por exemplo) podem ser executados, sendo assim, não teria como ter o ´rows affected´ de 1 instrução.


T+


Responder

Gostei + 0

23/01/2004

Midas

Agradeço imensamente sua atenção, e mais uma vez tu tirastes qualquer dúvida da minha parte sobre o assunto.
Grato...
Um abraço...


Responder

Gostei + 0

24/01/2004

Afarias

Midas, eu tava vendo q no FB 1.5 vc dispõe agora de uma variável chamada ROW_COUNT (em procedures e triggers) que informa a quantidade de registros ´afetados´ pelo último comando DML (não vale para selects) -- sendo assim, vc poderia ter algo como::


update sua_tabela set campo_tal = x
where outro_campo = y;

if (row_count = 0) then
{...}


ou até retornar o valor::

parametro_tal = row_count;



T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar