当前位置: 代码迷 >> Sybase >> sybase进程生成主键序列及java调用过程
  详细解决方案

sybase进程生成主键序列及java调用过程

热度:4021   发布时间:2013-02-26 00:00:00.0
sybase过程生成主键序列及java调用过程

sybase过程生成主键序列及java调用过程:

?

??? 用sybase做一个跟Oracle序列功能相同的东东,方便移植使用

?

? 1.创建序列保存表

?

----创建序列生成表DROP TABLE dbo.AMS_YJ_MANAGE_SEQGO----序列生成记录表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 ALLPAGESGOINSERT 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_MAXGOCREATE 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                                                                                                                                                                                                                                                                                                         ENDGO

?

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;     }

?

?

?

?

?

  相关解决方案