Rows_Affected
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
Curtidas 0
Respostas
Afarias
16/01/2004
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+
Postanto, quando vc executa um UPDATE ou DELETE ou INSERT vc pode obter o resultado no seu componente (no Delphi por exemplo)
T+
GOSTEI 0
Midas
16/01/2004
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. ?
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. ?
GOSTEI 0
Afarias
16/01/2004
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+
-- 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+
GOSTEI 0
Midas
16/01/2004
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...
Grato...
Um abraço...
GOSTEI 0
Afarias
16/01/2004
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+
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+
GOSTEI 0