1 语法
CREATE OR REPLACE FUNCTION 函数名
RETURN 返回值类型
IS
声明部分;
BEGIN
函数体;
RETURN 变量;
END;
2 案例
CREATE OR REPLACE FUNCTION NEXTVALL (V_TYPE IN VARCHAR2) RETURN NUMBER IS
PRAGMA AUTONOMOUS_TRANSACTION; -- 添加自治事务
CUR NUMBER;
NUM NUMBER;
countNum NUMBER;
BEGIN
SELECT COUNT(*) into countNum FROM T_SYS_SEQUENCE WHERE TYPE = V_TYPE;
IF countNum > 0 THEN
SELECT CURRENT_VALUE into CUR FROM T_SYS_SEQUENCE WHERE TYPE = V_TYPE;
UPDATE t_sys_sequence SET CURRENT_VALUE = CURRENT_VALUE + "INCREMENT" WHERE TYPE = V_TYPE;
return CUR+1;
ELSE
INSERT INTO T_SYS_SEQUENCE (PK_ID,"TYPE", CURRENT_VALUE, "INCREMENT") VALUES (seq_t_sys_sequence.NEXTVAL,V_TYPE, 1, 1);
commit;
RETURN 1; -- 表中没有数据
END IF;
END NEXTVALL;