CREATE TABLE SECUENCIA( ID INTEGER PRIMARY KEY, CODIGO VARCHAR(60) NOT NULL, PREFIJO VARCHAR(60), DESCRIPCION VARCHAR(255) NOT NULL, NUMERO INTEGER DEFAULT 0 NOT NULL ); CREATE SEQUENCE SECUENCIA_ID_GEN; CREATE TRIGGER T_SECUENCIA_BI FOR SECUENCIA BEFORE INSERT AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(SECUENCIA_ID_GEN, 1); END; CREATE OR ALTER PROCEDURE SP_GENERA_SECUENCIA(CODIGO VARCHAR(60)) RETURNS ( SECUENCIA INTEGER ) AS DECLARE SEC INTEGER; BEGIN UPDATE SECUENCIA SET NUMERO = NUMERO + 1 WHERE CODIGO = :CODIGO RETURNING NUMERO INTO :SECUENCIA; IF (SECUENCIA IS NULL) THEN BEGIN INSERT INTO SECUENCIA(CODIGO, DESCRIPCION, NUMERO) VALUES (:CODIGO, :CODIGO, 1); SECUENCIA = 1; END SUSPEND; END; -- EJ /* * SELECT SECUENCIA FROM SP_GENERA_SECUENCIA('PRUEBA'); * ó .. NEW.SECUENCIA = (SELECT SECUENCIA FROM SP_GENERA_SECUENCIA('PRUEBA')) */
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter