AUTO NUMERACAO EM STORE PROCEDURE
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;
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;
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;
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