USE [ChangHong_612]
GO
/****** Object: StoredProcedure [dbo].[st_MES_GetCodeRule] Script Date: 09/10/2015 17:44:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[st_MES_GetCodeRule] (
@in_CodeRuleName varchar(50) = '' --规则名称
, @in_BillNO varchar(50) = '' --传入的单据编码
, @in_User varchar(20) = ''
, @OutCode varchar(50) = '' output
, @ShowRs bit = 1
)
/*************
exec [st_MES_GetCodeRule] 'MouldNO',''
select * from Sys_CodeRuleChild
creator: Wuchun
create date: 2012.11.06
Remark: 按编码规则产生相应编码
**************/
as
begin
declare @code varchar(200), @DeptCode varchar(20), @SNO varchar(20)
declare @RuleID int, @CodeRuleNo varchar(50), @InitValue varchar(50), @length int , @Level int
select @RuleID = RuleID from Sys_CodeRule where CodeRuleEName = @in_CodeRuleName and state = 1
select @Code = '', @DeptCode = '', @SNO = ''
declare cur cursor for
select CodeRuleNo, InitValue, length, level
from Sys_CodeRuleChild
where RuleID = @RuleID
order by level
open cur
fetch next from cur into @CodeRuleNo, @InitValue, @length, @Level
while(@@fetch_Status = 0)
begin
if(@CodeRuleNO = 'Date')
select @Code = @Code+convert(varchar(8),getdate(),112)
else if(@CodeRuleNO = 'BillNO')
select @Code = @Code+ rtrim(@in_BillNO)
else if(@CodeRuleNO = 'SN') --流水号
begin
exec st_MES_GetCodeInitValue @SNO output, @RuleID, @Level, @CodeRuleNO, @Length, @InitValue
select @Code = @Code+ rtrim(@SNO)
end
else if(@CodeRuleNO = 'Define')
select @Code = @Code + rtrim(@InitValue)
else if(@CodeRuleNO = 'EmpID')
select @Code = @Code + rtrim(@in_user)
else if(@CodeRuleNO = 'DeptCode')
begin
select @DeptCode = DeptCode from sys_user where UserCode = @in_User
select @Code = @Code + @DeptCode
end
fetch next from cur into @CodeRuleNo, @InitValue, @length, @Level
end
close cur
deallocate cur

--Output
select @OutCode = @Code
if @ShowRs = 1
select Code = @Code
end

----------------------------------------------------------------

USE [ChangHong_612]
GO
/****** Object: StoredProcedure [dbo].[st_MES_GetCodeInitValue] Script Date: 09/10/2015 17:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[st_MES_GetCodeInitValue] (
@ret varchar(20) output
, @in_RuleID int
, @in_Level int
, @in_CodeRuleNO varchar(20) = ''
, @in_Length int
, @in_InitValue varchar(20) = ''
)
/*************
creator: Wuchun
create date: 2012.11.06
Remark: 按编码规则流水号值
**************/
as
begin
begin tran
if (not exists(select 1 from Sys_CodeRuleValue
where RuleId = @in_RuleID and level = @in_Level and CodeRuleNo = @in_CodeRuleNO))
begin
if @in_InitValue = ''
select @in_InitValue = '1'
else
begin
if isnumeric(@in_InitValue) = 1
select @in_InitValue = convert(int,@in_InitValue)+1
else
select @in_InitValue = '1'
end

insert into Sys_CodeRuleValue(RuleID,CodeRuleNO, Level,value,updateTime)
select @in_RuleID, @in_CodeRuleNO, @in_Level, @in_InitValue, getdate()
end
else
begin
select @in_InitValue = value
from Sys_CodeRuleValue with(rowlock,xlock)
where RuleId = @in_RuleID and level = @in_Level
and CodeRuleNo = @in_CodeRuleNO
select @in_InitValue = convert(int,@in_InitValue)+1
update Sys_CodeRuleValue with (rowlock) set value = @in_InitValue, updateTime = getdate()
where RuleId = @in_RuleID and level = @in_Level
and CodeRuleNo = @in_CodeRuleNO
end
commit tran
select @ret = replace(str(right(@in_InitValue,@in_Length), @in_Length), space(1), '0')

end

sql的存储过程调用的更多相关文章

  1. sql server存储过程调用C#编写的DLL文件

    新建C#类库,编译. 引用 using Microsoft.SqlServer.Server; 方法 [SqlFunction]public static int GenerateTxt(){ ... ...

  2. VS中调用SQL SERVER存储过程

     存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...

  3. VB.NET调用SQL Sever存储过程

    概要: 本文介绍VB.NET使用创建并调用带有输入参数和输出参数的SQL Sever存储过程 本文代码首先检查要创建的存储过程再数据库中是否存在在.如果不存在,则代码创建一个存储过程,该过程一个参数来 ...

  4. Yii2.0调用sql server存储过程并获取返回值

    1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...

  5. sql server 查询某个表被哪些存储过程调用

    sql server 查询某个表被哪些存储过程调用 select distinct object_name(id) from syscomments where id in (select id fr ...

  6. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  7. C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try

    C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...

  8. 调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG(转永喃兄)

    调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG 1)查询会重复执行的情形:Result := DATASETPROVIDER.Data会触发它关联的DATASET ...

  9. toad调用存储过程,存储过程调用sql 类

    1.定义一个sql 类Hello DROP JAVA SOURCE NEWXZXT."Hello"; CREATE OR REPLACE AND RESOLVE JAVA SOUR ...

随机推荐

  1. 用户输入 i. 检测常用手势(一)

    参考: http://blog.csdn.net/qq418716640/article/details/8508973http://www.cnblogs.com/mengdd/p/3335508. ...

  2. Mysql,SqlServer,Oracle主键自动增长的设置

    1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: )); insert into customers ...

  3. noip2007提高组题解

    题外话:这一年的noip应该是最受大众关心的,以至于在百度上输入noip第三个关键字就是noip2007.主要是由于这篇文章:http://www.zhihu.com/question/2110727 ...

  4. wav文件格式分析详解

    wav文件格式分析详解 文章转载自:http://blog.csdn.net/BlueSoal/article/details/932395 一.综述    WAVE文件作为多媒体中使用的声波文件格式 ...

  5. windows配置jdk

    一.JDK1.6下载 目前JDK最新版本是JDK1.6,到http://java.sun.com/javase/downloads/index.jsp可以下载JDK1.6. 二.JDK1.6安装 JD ...

  6. Vagrant搭建Ubuntu-JavaEE开发环境——Tomcat+JDK+MySQL+dubbo+测试

    Vagrant搭建(Tomcat8+JDK7+MySQL5+dubbo) JDK 1.下载jdk 2.解压JDK tar -xzvf jdk-7u79-linux-x64.tar.gz 3.设置环境变 ...

  7. 常用UI布局

    1.LinearLayout(线性布局):将布局所包含的控件在线性方向上依次排列. <1>android:orientation 指定了排列方向(垂直方向(vertical).水平方向(h ...

  8. Oracle 课程六之hint

    课程目标 完成本课程的学习后,您应该能够: •什么是oracle hint •Hint的使用范围 •Hint 汇总 •演示常用的hint   Hint简介 Hint是oracle 提供的一种SQL语法 ...

  9. Android平台程序崩溃的类型及原因列举

    Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...

  10. [android]如何让TextView使用超链接

    找了很多网址,最后是这个有说到. 总的做法是: 1.(当然也可以从Res中获取.) tv.setText(Html.fromHtml("<a href=\"http://ww ...