说明

序号发生器存储过程sp_get_uni_id用以修改系统表 id_codeid 的值。

目前作用于两个功能点:
1)lczCreater的文件上传;
2)lczCreater的主从表模型的主键自动生成。

源码

MySql的SQL语句

CREATE PROCEDURE sp_get_uni_id(
 IN in_name VARCHAR(50),
 IN in_step INT,
 OUT out_value VARCHAR(50)
)
BEGIN
  START TRANSACTION;

  UPDATE ID_CODEID SET ID_VALUE = ID_VALUE+in_step WHERE ID_NAME = in_name;
  SELECT ID_VALUE - in_step + 1 INTO out_value FROM ID_CODEID WHERE ID_NAME = in_name;
  IF out_value IS NULL
  THEN
    INSERT INTO ID_CODEID (ID_NAME, ID_VALUE) VALUES (in_name, in_step);
    SET out_value = 1;
  END IF;

  COMMIT;
END

华为GaussDB的SQL语句

CREATE OR REPLACE PROCEDURE sp_get_uni_id(
    in_name    IN   VARCHAR(50),
    in_step    IN   INTEGER,
    out_value  OUT  INTEGER
)
AS
BEGIN
  UPDATE ID_CODEID SET ID_VALUE = ID_VALUE+in_step WHERE ID_NAME = in_name;
  SELECT ID_VALUE - in_step + 1 INTO out_value FROM ID_CODEID WHERE ID_NAME = in_name;
  IF out_value IS NULL
  THEN
    INSERT INTO ID_CODEID (ID_NAME, ID_VALUE) VALUES (in_name, in_step);
    SET out_value = 1;
  END IF;
END;
作者:Eric  创建时间:2023-07-10 16:10
最后编辑:Eric  更新时间:2025-04-24 13:55