O que ta errado - Stored
Pessoal o que tem de errado nesta procedure? eu quero que ela atualize o campo codigo fazendo um update deixando, 1,2,3,4,5,6,7, no momento o campo esta assim 1,5,9,15,23,26. fiz assim
CREATE PROCEDURE ATUALIZAR_ORD
RETURNS (
COD INTEGER)
AS
DECLARE VARIABLE NUMERO INTEGER;
begin
numero = 1;
for select CodCliente from Bancos
into :cod do
begin
cod = numero;
numero = numero + 1;
end
end
Sou novato e to tendo dificuldade de fazer, ela ta funcionando mas nao atualiza, uso ela no ibexpert para teste como
execute procedure ATUALIZAR_ORD
Valeu - Renato
CREATE PROCEDURE ATUALIZAR_ORD
RETURNS (
COD INTEGER)
AS
DECLARE VARIABLE NUMERO INTEGER;
begin
numero = 1;
for select CodCliente from Bancos
into :cod do
begin
cod = numero;
numero = numero + 1;
end
end
Sou novato e to tendo dificuldade de fazer, ela ta funcionando mas nao atualiza, uso ela no ibexpert para teste como
execute procedure ATUALIZAR_ORD
Valeu - Renato
Renato_sp
Curtidas 0
Respostas
Afarias
29/05/2004
não entendi o q vc deseja... falou em atualizar um campo mas o q o procedimento faz é um SELECT...
o que exatamente vc deseja?!
T+
o que exatamente vc deseja?!
T+
GOSTEI 0
Renato_sp
29/05/2004
Tipo eu tenho um campo Codigo que ele foi deletado alguns registros.. e ele ficou assim
Codigo - Nome
1 Joao
6 Carlos
9 Sergio
13 Jose
O campo codigo nao ta seguindo uma ordem, eu queria fazer uma procedure que pegasse o primeiro e colocasse 1, pegasse o segundo e colocasse 2 para ficar assim
Codigo - Nome
1 Joao
2 Carlos
3 Sergio
4 Jose
Ou seja ele pegar um por um e ir colocando em ordem.. atualizando..
Nao sei se expliquei direito.. !! qualquer coisa tento novamente...
Valeu pela ajuda
Codigo - Nome
1 Joao
6 Carlos
9 Sergio
13 Jose
O campo codigo nao ta seguindo uma ordem, eu queria fazer uma procedure que pegasse o primeiro e colocasse 1, pegasse o segundo e colocasse 2 para ficar assim
Codigo - Nome
1 Joao
2 Carlos
3 Sergio
4 Jose
Ou seja ele pegar um por um e ir colocando em ordem.. atualizando..
Nao sei se expliquei direito.. !! qualquer coisa tento novamente...
Valeu pela ajuda
GOSTEI 0
Afarias
29/05/2004
Ok, entendi!
Devo adverti-lo que isto não é um procedimento normal (correto) ou aconselhável (principalmente em se tratando de um SGBD-R)
o q vc quer pode ser conseguido com o procedimento::
ou (se tiver problemas de erro de chave primária) ::
T+
Devo adverti-lo que isto não é um procedimento normal (correto) ou aconselhável (principalmente em se tratando de um SGBD-R)
o q vc quer pode ser conseguido com o procedimento::
create procedure reset_codigos as begin /* primeiro, "zere" um generator! */ select gen_id(nome_generator, -1 * gen_id(nome_generator, 0)) from rdb$database; /* agora atualize a tabela */ update nome_tabela set codigo = gen_id(nome_generator, 1); end^
ou (se tiver problemas de erro de chave primária) ::
create procedure reset_codigos as declare variable codigo integer; begin /* primeiro, "zere" um generator! */ select gen_id(nome_generator, -1 * gen_id(nome_generator, 0)) from rdb$database; /* agora atualize a tabela */ for select codigo from nome_tabela order by codigo into :codigo do begin update nome_tabela set codigo = gen_id(nome_generator, 1) where codigo = :codigo; end end^
T+
GOSTEI 0
Renato_sp
29/05/2004
Afaria muito obrigado por tudo que tem me explicado.. eu quero fazer essa procedure de atualizar o codigo so para aprender... to fazendo varias stored para ficar treinando.. eu sei que atualizar o codigo nao é aconselhavel por causa de chave primary etc... mas é so para testar para aprender os comandos....
Poderia me explicar isso ? rdb$database; o que seria? no seu codigo vc citou isso para mim !!!! e eu ainda nao sei para que fazer isso?
Renato / SP
Poderia me explicar isso ? rdb$database; o que seria? no seu codigo vc citou isso para mim !!!! e eu ainda nao sei para que fazer isso?
Renato / SP
GOSTEI 0
Afarias
29/05/2004
|Poderia me explicar isso ? rdb$database; o que seria? no seu codigo vc
|citou isso para mim !!!! e eu ainda nao sei para que fazer isso?
RDB$DATABASE é uma tabela de sistema do IB
-- esta tabela possui alguns dados sobre o banco de dados em questão -- mas seu maior uso é pelo fato de sempre conter apenas 1 registro, sendo assim é usada em selects para obter o valor de uma função, ex::
select gen_id(generator, 1) from rdb$database;
select current_timestamp as ´Data e Hora Atual´ from rdb$database;
Note q não são campos da tabela q estào sendo selecionados, apenas um valor qualquer, e a tebela é usanda por ter apenas 1 registro sendo assim o valor será retornado apenas 1 única vez.
Isso é comum em bancos de dados, no Oracle por exemplo é muito utilizado uma tabela chamada DUAL (que existe justamente para este fim)
T+
|citou isso para mim !!!! e eu ainda nao sei para que fazer isso?
RDB$DATABASE é uma tabela de sistema do IB
-- esta tabela possui alguns dados sobre o banco de dados em questão -- mas seu maior uso é pelo fato de sempre conter apenas 1 registro, sendo assim é usada em selects para obter o valor de uma função, ex::
select gen_id(generator, 1) from rdb$database;
select current_timestamp as ´Data e Hora Atual´ from rdb$database;
Note q não são campos da tabela q estào sendo selecionados, apenas um valor qualquer, e a tebela é usanda por ter apenas 1 registro sendo assim o valor será retornado apenas 1 única vez.
Isso é comum em bancos de dados, no Oracle por exemplo é muito utilizado uma tabela chamada DUAL (que existe justamente para este fim)
T+
GOSTEI 0
Renato_sp
29/05/2004
Afaria.. muito obrigado pela explicacao.. !!! valeu pela ajuda.. !!!
Muito obrigado mesmo.. !!!
Muito obrigado mesmo.. !!!
GOSTEI 0