欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 02:21:14 责任编辑: Author_N1

 

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

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

 

 

 

 

 

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:21:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8785/
本文WWW.DOC100.NET DOC100.NET版权所有。