SQL SERVER 2008存储过程生成编号,JDBC调用
来源:互联网 发布:vb tab的作用 编辑:程序博客网 时间:2024/06/03 22:56
存储过程
USE [20150513GT]GO/****** Object: StoredProcedure [dbo].[PRO_AUTO_PROJECT_ORDERID] Script Date: 09/29/2016 11:31:08 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- Batch submitted through debugger: SQLQuery18.sql|7|0|C:\Users\Administrator\AppData\Local\Temp\~vs6A2F.sql-- =============================================-- Author: huangjp-- Create date: 2016-09-28-- Description: 通过参数自动生成事项编号-- 规则(type+zjcode+date+001) 部门类型 + 镇街代码 + 年月 + 序列号(三位) EG: A001506197-- =============================================ALTER PROCEDURE [dbo].[PRO_AUTO_PROJECT_ORDERID] -- Add the parameters for the stored procedure here @in_ProjectId nvarchar(20), @in_UserName nvarchar(30), @in_prjPKid nvarchar(20), @out_OrderId nvarchar(50) outputAS declare @temp_order_flag nvarchar(255), @temp_departType nvarchar(2), @temp_ZjCode nvarchar(10), @temp_Date nvarchar(6), @temp_sql_text1 nvarchar(5), @temp_sql_text2 nvarchar(5), @ParmDefinition nvarchar(500), @sql nvarchar(255) BEGIN SET NOCOUNT ON; set @temp_order_flag = (select i.order_id from o_pfo i where i.id = @in_prjPKid); if LEN(@temp_order_flag) is null or LEN(@temp_order_flag) = 0 begin set @temp_departType = (select case when project_departid='3' then 'A' else 'B' end from o_g where id=@in_ProjectId); -- find zjcode,date select @temp_ZjCode = (case when u.zjcode is null or len(u.zjcode)=0 then '00' else u.zjcode end) from UG_GROUP u where u.TYPE = 'org' and u.GROUP_ID in ( select g.GROUP_ID from u_g g where g.USER_ID = ( select uu.USER_ID from u_ur uu where uu.NAME = @in_UserName )); select @temp_Date=SUBSTRING(CONVERT(varchar(12),getdate(),112),3,4); set @temp_sql_text1 = '%'; set @temp_sql_text2 = ''''; set @sql = N'select top 1 @temp_orderOUT = order_id from o_pfo where order_id like' + @temp_sql_text2 + @temp_sql_text1 + @temp_departType + @temp_ZjCode + @temp_Date + @temp_sql_text1 + @temp_sql_text2 + ' and len(order_id) > 8 order by order_id desc'; SET @ParmDefinition = N'@temp_orderOUT varchar(255) output'; exec sp_executesql @sql,@ParmDefinition,@temp_orderOUT=@out_OrderId output; if @out_OrderId is null begin set @out_OrderId = @temp_departType + @temp_ZjCode + @temp_Date + '001'; end else begin declare @temp_seq_len int, @temp_seq_str varchar(3); set @temp_seq_str = (select convert(int,SUBSTRING(@out_OrderId,8,3))) + 1; --set @temp_seq_str = (select convert(int,SUBSTRING('A001607122',8,3))) + 1; set @temp_seq_len = LEN(@temp_seq_str); while @temp_seq_len < 3 begin set @temp_seq_str = '0' + @temp_seq_str; set @temp_seq_len = @temp_seq_len + 1; end set @out_OrderId = SUBSTRING(@out_OrderId,1,7) + @temp_seq_str; end begin begin tran begin try update o_pfo set order_id = @out_OrderId where id = @in_prjPKid commit end try begin catch rollback select ERROR_NUMBER() as 返回错误号,ERROR_SEVERITY() as 返回严重性,ERROR_STATE() as 返回错误状态号,ERROR_PROCEDURE() as 返回出错误的存储过程或触发器的名称,ERROR_LINE() as 返回导致错误的例程中的行号,ERROR_MESSAGE() as 返回错误消息的完整文本该文本 end catch end end else begin set @out_OrderId = @temp_order_flag; end select @out_OrderIdEND
JDBC调用
String cOrderId = (String) this.getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { String rStr = ""; String proc = " {call PRO_AUTO_PROJECT_ORDERID(?,?,?,?)} "; Connection conn = null; CallableStatement cstmt = null; try { conn = session.connection(); //conn.setAutoCommit(false); cstmt = conn.prepareCall(proc); cstmt.setString("@in_ProjectId", (String)fm_params.get("projectId")); cstmt.setString("@in_UserName", (String)fm_params.get("userName")); cstmt.setString("@in_prjPKid", (String)fm_params.get("prjPkId")); cstmt.registerOutParameter("@out_OrderId", java.sql.Types.VARCHAR); cstmt.execute(); conn.commit(); /*因返回的是结果集,要加判断,如不加则报错java.sql.SQLException: Output parameters have not yet been processed. Call getMoreResults().*/ if(!cstmt.getMoreResults()){ rStr = cstmt.getString(4); } /*cstmt.getMoreResults(); ResultSet rs = (ResultSet) cstmt.getObject(4); while (rs.next()){ rStr = rs.getString(1); } rs.close();*/ } catch (Exception ex) { try { conn.rollback(); } catch (SQLException e1) { logger.error(e1); e1.printStackTrace(); } ex.printStackTrace(); } finally { if(cstmt != null) { try { cstmt.close(); }catch(Exception ex) {} } } logger.info("saveOrupdateObject: call PRO_AUTO_PROJECT_ORDERID,return value=" + rStr); return rStr; } });
0 0
- SQL SERVER 2008存储过程生成编号,JDBC调用
- JDBC调用SQL SERVER存储过程方法
- JDBC调用Sql server 2005 存储过程出现的问题
- Delphi 调用SQL Server 2008存储过程
- mysql存储过程与sql server存储过程自动生成编号:20150101007 当天逐一增加 方法比较
- SQL Server学习:Java调用SQL Server存储过程(JDBC方式)
- Sql Server 调用存储过程
- sql server 存储过程 返回错误信息 (编号:20110617A1020)
- jdbc调用pl/sql存储过程
- JDBC调用SQL存储过程返回游标
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- sql server自动生成编号
- SQL SERVER存储过程生成工具
- SQL Server 存储过程生成insert语句
- C#调用Sql Server 2008的存储过程流程
- PHP调用SQL Server存储过程
- 数据结构实验之链表五:单链表的拆分
- mysql乐观锁总结与实践
- 智能社—JavaScript基础01
- URL加随机数的作用
- block防止死循环
- SQL SERVER 2008存储过程生成编号,JDBC调用
- Oracle表数据恢复
- 几个简单的网络命令(ping、tennet、ssh、netstat)
- AndroidStudio替换项目图标ic_launcher
- MFC编辑框自动换行,垂直滚动条自动下移
- 【Cherry云计算】阿里云管理控制台概要介绍
- 关于程序员面试的一点感悟
- 点线面如何标绘在地图上
- Log4j-使用详解与Java的实例应用