create PROCEDURE [dbo].[GetTableNextID]
@TableName VARCHAR(20),@NextID INT OUTPUT
AS
BEGIN
--DECLARE @NextID BIGINT
SELECT @NextID=NextID FROM TableID WHERE TableName=@TableName
IF(@NextID IS NULL)
BEGIN
INSERT INTO TableID(TableName,NextID) VALUES(@TableName,0)
SET @NextID=1
END
UPDATE TableID SET NextID=NextID+1 WHERE TableName=@TableName
RETURN @NextID
END
DECLARE @count INT
EXECUTE GetTableNextID 'FO_FORM', @count OUTPUT
PRINT @count
// 如果是新增
if (!PublicUtil.checkBigerThanZero(foForm.getFdformid())) {
foForm.setFdformtable(FORM_PERFIX + foForm.getFdformtable());
foForm.setFdformid(DBUtil.getTableNextID("FO_FORM"));
foForm.setFdformcreateat(new Date());
foForm.setFdformcountsum(0L);
foFormService.createBaseTable(foForm.getFdformtable());
}
foFormService.saveOrUpdate(foForm);
/**
* 根据表名得到下一个主键值
*
* @param tableName
* @return
*/
public static long getTableNextID(String tableName) {
try {
Connection conn = getConnection();
CallableStatement call = conn
.prepareCall("{call GetTableNextID(?,?)}");
call.setString(1, tableName);
call.registerOutParameter(2, Types.INTEGER);
call.execute();
long nextId = call.getLong(2);
return nextId;
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
return 0;
}