DataObjects/ProjectDirectory.php
[Pman.Core] / DataObjects / core_functions.sql
index d1e360f..d35ce1e 100644 (file)
@@ -16,14 +16,22 @@ DELIMITER ;
 
 
 
-DROP PROCEDURE IF EXISTS core_enum_seqmax_update;
+DROP FUNCTION IF EXISTS core_enum_seqmax_update;
 DELIMITER $$
-CREATE PROCEDURE core_enum_seqmax_update( etype varchar(128))
+CREATE FUNCTION core_enum_seqmax_update( in_etype varchar(128))
+        RETURNS INT(11) DETERMINISTIC
+
 BEGIN
-        DECLARE seqmax INT(11);
-        SELECT MAX(seqid) +1 INTO seqmax FROM core_enum WHERE
-            etype = etype;
-        UPDATE core_enum SET seqmax = seqmax WHERE etype = etype;
-        
+        DECLARE v_seqmax INT(11);
+        SELECT MAX(seqid) +1 INTO v_seqmax FROM core_enum WHERE
+            etype = in_etype;
+        UPDATE core_enum SET seqmax = v_seqmax WHERE etype = in_etype;
+        RETURN v_seqmax;
     END $$
 DELIMITER ;
+
+-- usage: SELECT core_enum_seqmax_update(DISTINCT(etype)) FROM core_enum;
+DROP TABLE IF EXISTS core_enum_tmp;
+CREATE TEMPORARY TABLE core_enum_tmp SELECT DISTINCT(etype) FROM core_enum;
+SELECT core_enum_seqmax_update(etype) FROM core_enum_tmp;
+DROP TABLE IF EXISTS core_enum_tmp;
\ No newline at end of file