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. asp.net实现GZip压缩和GZip解压

    最近在开发一个网站doc.115sou.com,使用到了GZip压缩技术,经过多次搜索找到asp.net中用GZip对数据压缩和解压缩非常方便,当我第一次拿到这个类的时候却感觉很迷茫,无从下手.主要是 ...

  2. poj 1986 Distance Queries(LCA:倍增/离线)

    计算树上的路径长度.input要去查poj 1984. 任意建一棵树,利用树形结构,将问题转化为u,v,lca(u,v)三个点到根的距离.输出d[u]+d[v]-2*d[lca(u,v)]. 倍增求解 ...

  3. 【C#学习笔记】调用C++生成的DLL

    首先用vs2010建立win32项目,选择dll和空项目. 头文件add.h extern "C" __declspec(dllexport) int add(int a,int ...

  4. Android 开发框架介绍

    一.概述 现android开发有很多开发框架使用,做App不一定用到框架,但好框架的思想也是值得学习.选择合适的开发框架可提供实用功能,简化项目开发提升效率. 二.Afinal框架 简介 Afinal ...

  5. MySQL基础之第5章 操作数据库

    假设已经登录 mysql-h localhost -uroot -proot 5.1.显示.创建.删除数据库 show databases;     显示所有的数据库 create database ...

  6. git pull冲突解决

    场景:用户UserA修改了文件File1,用户UserB也修改了文件File1并成功merge到了服务器上,而UserA和UserB改动了同一个代码块,当UserA拉取代码时git无法merge此改动 ...

  7. [转] C# 泛型类型参数的约束

    啊.紫原文C# 泛型类型参数的约束 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制 ...

  8. hadoop中日志聚集问题

    遇到的问题: 当点击上面的logs时,会出现下面问题: 这个解决方案为: By default, Hadoop stores the logs of each container in the nod ...

  9. 开源侧滑菜单SlidingMenu主要方法介绍

    SlidingMenu是一个很好使用的侧滑菜单开源项目,它的表现形式类似于DrawerLayout和SlidingDrawer,具体效果如下图所示,左侧为侧滑Menu菜单,右侧黑色部分为内容显示视图C ...

  10. UIBezierPath 贝塞尔曲线

    1. UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(30, 30, 100, 100) corner ...