sybase过程生成主键序列及java调用过程:
用sybase做一个跟Oracle序列功能相同的东东,方便移植使用
1.创建序列保存表
----创建序列生成表 DROP TABLE dbo.AMS_YJ_MANAGE_SEQ GO ----序列生成记录表 CREATE TABLE dbo.AMS_YJ_MANAGE_SEQ ( YJ_TYPE varchar(64) NOT NULL, YJ_NAME varchar(64) NULL, YJ_MAX int NOT NULL, USER_ID int NULL, CONSTRAINT AMS_YJ_MANAGE_SEQ_PK PRIMARY KEY NONCLUSTERED(YJ_TYPE) WITH max_rows_per_page = 0, reservepagegap = 0 ) LOCK ALLPAGES GO INSERT INTO dbo.AMS_YJ_MANAGE_SEQ(YJ_TYPE, YJ_NAME, YJ_MAX, USER_ID) VALUES('AMS_YJ_COMVAN_SEQ', '应急通信车', 10017, NULL) GO
2. 创建序列生成存储过程 (@TYPE_MAX 返回参数)
DROP PROCEDURE dbo.YJ_MANAGE_GET_MAX GO CREATE PROCEDURE dbo.YJ_MANAGE_GET_MAX( @YJ_TYPE VARCHAR(256), @TYPE_MAX INT OUTPUT) AS ---序列生成器 BEGIN DECLARE @MAX_BAK INT SELECT @MAX_BAK = YJ_MAX+1 from AMS_YJ_MANAGE_SEQ WHERE YJ_TYPE=@YJ_TYPE IF @MAX_BAK<>0 BEGIN UPDATE AMS_YJ_MANAGE_SEQ SET YJ_MAX=YJ_MAX+1 WHERE YJ_TYPE=@YJ_TYPE END SELECT @TYPE_MAX= @MAX_BAK RETURN @TYPE_MAX END GO
3. java调用
/** * 取当前应急类型的最大编号 * @return */ public int getYjManagerMax(String yj_type) { int isSyn= 0; CallableStatement cStmt = null; String sqlStr = "{call dbo.YJ_MANAGE_GET_MAX(?,?)}"; try { cStmt = conn.prepareCall(sqlStr); cStmt.setString(1,yj_type); cStmt.registerOutParameter(2,java.sql.Types.INTEGER); cStmt.execute(); isSyn= cStmt.getInt(2); ----返回的序列号 System.out.println("yyyyyy====="+isSyn); } catch (SQLException e) { e.printStackTrace(); isSyn= -1; } finally { DBManager.closeDBStatement(cStmt); } return isSyn; }
相关推荐
Hibernate作为一款流行的Java持久层框架,提供了多种自动生成主键的方法,以适应不同场景的需求。本文将深入探讨Hibernate中自动生成主键的几种常见策略及其应用场景。 ### 1. UUID.hex UUID(Universally Unique ...
- **序列(Sequence):** 自动递增或递减的数字序列,常用于主键生成。 #### 四、ASE 12 SQL语法 - **DDL(数据定义语言)** - `CREATE TABLE`: 创建新表。 - `ALTER TABLE`: 修改现有表结构。 - `DROP TABLE`: ...
在跨平台的系统中,如需兼容Oracle、SQL Server和Sybase等,就必须采用一种通用的序列键管理机制,例如使用一个表来管理所有主键。为了确保键值不重复,采用了预定式存储方法,即先更新数据库中的键值,再提供给...
5. **sequence**: 使用数据库的序列生成主键,适用于DB2、PostgreSQL、Oracle、SAP DB、McKoi和Interbase。 6. **hilo**: 使用Hi-Lo算法,需要一个数据库表来存储生成的主键。不适用于JTA环境或自定义数据库连接。 ...
Sequence策略依赖于数据库提供的序列特性来生成主键。 **特点:** - 适用于支持序列特性的数据库,如Oracle、DB2、PostgreSQL、SAP DB等。 - 由于依赖数据库特性,不同数据库之间的移植性较差。 - 在Oracle等支持...
- **标识列(IDENTITY)**:自动为新插入的行生成一个唯一的数字序列,常用于模拟主键。 #### 4. 内存有哪几种存储组织结构?请分别加以说明 内存组织结构主要包括以下几个方面: - **栈区(Stack)**:由编译器...
`GenerationType.IDENTITY`适用于DB2、MySQL、MS SQL Server、Sybase和HypersonicSQL,而`GenerationType.SEQUENCE`则在支持序列的数据库(如Oracle)中使用。`GenerationType.HILO`和`GenerationType.UUID`分别用于...
- **调用函数与过程**:通过PreparedStatement执行存储过程或函数。 - **DAO封装**:Data Access Object模式,封装数据访问逻辑。 以上内容涵盖了Oracle数据库的基础知识、核心概念以及相关技术和操作要点,旨在...
- **IdentifierGenerator**:这个接口允许定制主键生成策略,比如UUID、自增序列等,以满足不同的数据库和业务需求。 - **Cache**:接口用于定制缓存机制,以提高性能和减少数据库访问。Hibernate支持第二级缓存和...
* sequence(序列):在 DB2, PostgreSQL, Oracle, SAP DB, McKoi 中使用序列(sequence),而在 Interbase 中使用生成器(generator)。返回的标识符是 long, short 或者 int 类型的。 * assigned(自行分配):...