Store Procedure
:? 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]
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
Curtidas 0
Respostas
Renato_sp
12/02/2005
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.
Agora para utilizar ela é simples
Espero que te ajude...
Renato / SP[/code]
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]
GOSTEI 0
Duarteol
12/02/2005
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
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
GOSTEI 0
Gandalf.nho
12/02/2005
Tire a linha SUSPEND e use EXECUTE PROCEDURE para executar a SP
GOSTEI 0