GARANTIR DESCONTO

Fórum Store Procedure #49342

12/02/2005

0

:? Tenho um BD, em que tenho um campo chamado ordem, aonde esta gravado numeros desordenados, ex:

ordem nome
1 Hermeto
2 Edna
3 Marcos
4 Valkiria
6 Evandro
8 Junior
10 Gildo

ele deve ficar da seguinte forma:

ordem nome
1 Hermeto
2 Edna
3 Marcos
4 Valkiria
6 Evandro
7 Junior
8 Gildo

queria criar uma procedure pra gravar no campo ordem a numeraçao correta, se puderem me dar uma força....agradeço [/b]


Duarteol

Duarteol

Responder

Posts

13/02/2005

Renato_sp

Amigo se entendi bem vc quer organizar os codigos, mas avisando este procedimento nao é muito correto para banco de dados C/S devido perder toda a consistencia das tabelas, mas como nao sei o que pretende fazer eu fiz ela para voce. Um Abraco.

CREATE PROCEDURE ALINHARCODIGO 
AS
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE INC INTEGER;
begin
   Inc = 1;
   for select Ordem from tabela
       into :Codigo do begin
          update tabela set Ordem = :Inc
             where Ordem = :Codigo;
          inc = inc + 1;
       end
end


Agora para utilizar ela é simples

execute procedure AlinharCodigo


Espero que te ajude...
Renato / SP[/code]


Responder

Gostei + 0

18/02/2005

Duarteol

Eu já tenho a seguinte procedure, mas eu não estou conseguindo gravar a sequencia no matr_numero, o que esta errado...?

CREATE PROCEDURE EMM_REORDENA (
VALU_NOME VARCHAR(200),
VMATR_ANOLETIVO INTEGER,
VMATR_NUMERO INTEGER,
VTUR_COD INTEGER)
AS
DECLARE VARIABLE VAR_NUMERO INTEGER;
begin
For Select ALU_NOME, MATR_ANOLETIVO, MATR_NUMERO, TUR_COD From emm_dadosmatr
INNER JOIN EMM_ALUNOS Emm_alunos
ON (emm_dadosmatr.ALU_COD = Emm_alunos.ALU_COD)
Where TUR_COD = :vtur_cod and MATR_ANOLETIVO = :vmatr_anoletivo
order by emm_alunos.alu_nome Into
:valu_nome, :vmatr_anoletivo, :vmatr_numero, :vtur_cod
Do
Begin
update emm_dadosmatr
set emm_dadosmatr.matr_numero = :VAR_NUMERO + 1
Where TUR_COD = :vtur_cod and MATR_ANOLETIVO = :vmatr_anoletivo;
suspend;
End
end


Responder

Gostei + 0

18/02/2005

Gandalf.nho

Tire a linha SUSPEND e use EXECUTE PROCEDURE para executar a SP


Responder

Gostei + 0

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

Aceitar