AUTO NUMERACAO EM STORE PROCEDURE

ARNALDOCRUZ 24/05/2010 11:18:39
#342607
Bom dia

CHAVE int autonumeracao
ID Int
ICMS Double
ISS Double

Na inclusão

Nesta procedure o campo ID - antes de passar ele para procedure eu seleciono o max(icampoChave) da tabela aliquota, verifico se a tabela está vazia, se estiver o campo id será o max(chave) se não seleciono de novo o max(campoID) e adiciono 1. Só depois disso passo o valor do campo ID para procedure.

Teria um jeito fazer isso automaticaemnte ?

CREATE PROCEDURE SP_ALIQUOTA(
PID CPONUMVAL0,
PICMS MONE,
PISS MONE,
TIPO FJ)
AS
BEGIN
IF (TIPO = [ô]I[ô]) THEN
INSERT INTO TBLALIQUOTA(ID,ICMS,ISS)
VALUES(:PID, :PICMS, :PISS);
IF (TIPO = [ô]A[ô]) THEN
UPDATE TBLALIQUOTA
SET ICMS = :PICM, ISS= :PISS
WHERE CHAVE = :PID;
IF (TIPO = [ô]E[ô]) THEN
DELETE FROM TBLALIQUOTA WHERE CHAVE = :PID;
SUSPEND;
END;


MSMJUDAS 24/05/2010 12:22:34
#342613
Resposta escolhida
Joga o próximo número para uma varável

CREATE PROCEDURE SP_ALIQUOTA(
PID CPONUMVAL0,
PICMS MONE,
PISS MONE,
TIPO FJ)
IS
CODIGO INTEGER;
BEGIN
SELECT NVL(MAX(ID_TABELA, 0) + 1 INTO CODIGO FROM TABELA;
IF (TIPO = [ô]I[ô]) THEN
INSERT INTO TBLALIQUOTA(CODIGO,ICMS,ISS)
VALUES(:PID, :PICMS, :PISS);
IF (TIPO = [ô]A[ô]) THEN
UPDATE TBLALIQUOTA
SET ICMS = :PICM, ISS= :PISS
WHERE CHAVE = :PID;
IF (TIPO = [ô]E[ô]) THEN
DELETE FROM TBLALIQUOTA WHERE CHAVE = :PID;
SUSPEND;
END;
Tópico encerrado , respostas não são mais permitidas