`
tanglong8848
  • 浏览: 66756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

简单创建存储过程范例

阅读更多
 
ALTER PROCEDURE  [dbo].[usp_syn_kmbs]
	 @batchid  int --输入参数 --如果声明OUTPUT为输出参数
AS
BEGIN
   declare @username varchar --声明变量
   declare @cellphone varchar
   declare @storecode	varchar
   declare @sid int
   declare cur cursor for --定义游标
	SELECT  [SID],USERNAME, CELLPHONE,STORECODE  FROM  KMBS_SOURCE  WHERE  BATHCID=@batchid  
	
	open cur--打开游标
	fetch next from cur into @sid,@username,@cellphone,@storecode  --把提取操作的列数据放到局部变量中
	while(@@fetch_status=0) --游标读取下一条数据是否成功
	begin
	  declare @isin int
	  declare @autoid int
	   select @isin=isnull([dkr_id],0) from [KMBS_REGISTER] where [DKR_CELLPHONE]=@cellphone
	 if @isin=0 
	    begin
	  
	   INSERT INTO  [KMBS_REGISTER]
           ([DKR_SID]
           ,[DKR_NAME]
           ,[DKR_NICKNAME]
           ,[DKR_CELLPHONE]
           ,[DKR_STORECODE]
           ,[CREATEDATE]
           ,[UPDATEDATE]
           ,[DKR_ISNEW]
           ,[DKR_ISFINISH]
           ,[DKR_CALLER],BITCHID)
           values(@sid,@username,@username,@cellphone,@storecode,GETDATE(),GETDATE(),0,0,0,@batchid)
			 select @autoid= @@identity
			 select @isin=isnull(dre_id,0) from REGISTER where DRE_CELLPHONE=@cellphone
			  if @isin>0 
				  begin
					update [KMBS_REGISTER] set  DKR_DRE_ID=@isin where  DKR_ID=@autoid
			  end 
	 
	   end
	 else
	 begin 
	    update  KMBS_SOURCE set ISIN=@isin where [SID]=@sid 
	 end

	fetch next from cur into   @sid,@username,@cellphone,@storecode --读取下一条数据记录放到局部变量中,变量的数目必须与游标选择列表中的列的数目一致
	end
	close cur--关闭游标
	deallocate cur--删除游标
	
   update KMBS_BATCH set 
    REPEATNUMBER=(select COUNT(*) from KMBS_SOURCE where BATCHID=@batchid and ISIN is not null)
   ,SUCCESSNUMBER=(select COUNT(*) from KMBS_REGISTER where BATCHID=@batchid)
   ,UPDATEDATE=GETDATE()
   ,TOTAL=(select COUNT(*) from KMBS_SOURCE where BATCHID=@batchid)
   ,[STATE]=2
   where BATCHID=@batchid
	
END
整体看上去没有错误,但细心的童鞋会发现问题:
  1、varchar未定义长度 
  2、if @isin=0 会不被执行,因为查出来的结果集有可能为null 故在下面做一下处理set @isin = isnull(@isin,0) 补救.
  3、 由于 select @isin=isnull([dkr_id],0)  不会被执行,所以导致变量一直不会更新
 所以在查询之前先设置一下:set @isin=null 最后进行一下优化处理:在头部声明时加上SET NOCOUNT ON;


分享到:
评论

相关推荐

    原创sql存储过程函数范例

    原创sql存储过程函数范例,一是为了自己方便查找,今天到公司因为没有我保存的一些范例,一个简单的例子写了半个小时,如果有范例直接套几分钟肯定搞定,所以索性上传到CSDN上,何时何地都能找到我的范例了。...

    PHP程序开发范例宝典III

    实例138 通过SESSION存储数据 204 实例139 通过SESSION实现购物车的功能 205 5.6 框架的应用 209 实例140 框架在聊天室中的应用 209 实例141 使用框架嵌套技术居中显示框架页 211 第6章 PHP与MySQL数据库...

    《Google Android SDK开发范例大全(第3版)》.pdf

    2.2 创建第一个android项目(hello android!) 11 2.3 android应用程序架构——从此开始 15 2.4 可视化的界面开发工具 18 2.5 部署应用程序到android手机 19 第3章 用户人机界面 22 3.1 更改与显示...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...

    Google Android SDK开发范例大全(第3版) 4/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版) 3/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版) 5/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版)part2

     2.2 创建第一个Android项目(Hello Android!)  2.3 Android应用程序架构——从此开始  2.4 可视化的界面开发工具  2.5 部署应用程序到Android手机  第3章 用户人机界面  3.1 更改与显示文字标签  3.2 ...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     2.2 创建第一个Android项目(Hello Android!)   2.3 Android应用程序架构——从此开始   2.4 可视化的界面开发工具   2.5 部署应用程序到Android手机  第3章 用户人机界面   3.1 更改与显示...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例216 删除视图 8.6 触发器 cc实例217 创建触发器 cc实例218 在程序中使用触发器 8.7 存储过程 cc实例219 创建存储过程 cc实例220 删除存储过程 cc实例221 在程序中使用存储过程 cc实例222 ...

    Google Android SDK开发范例大全的目录

    6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...

    Delphi开发范例宝典目录

    实例186 文件复制过程中显示进度条 238 5.6 指定类型的文件操作 239 实例187 对INI文件进行操作 239 实例188 文本文件的操作 241 实例189 在程序中使用自定义文件格式 242 实例190 简单的文件加密解密 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——...

    ASP.NET2.0典型模块(17-22)

    ExcuteProc.aspx 执行存储过程的范例 ExcuteProcParm.aspx 执行带参数的存储过程的范例 ExcuteReader.aspx 执行返回DataReader类型的范例 ExcuteScalar.aspx 执行返回一个字段的范例 ...

    C#程序开发范例宝典(第2版).part08

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    C#程序开发范例宝典(第2版).part12

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例219 创建存储过程   cc实例220 删除存储过程   cc实例221 在程序中使用存储过程   cc实例222 调用具有输出参数的存储过程   8.8 数据库结构的读取与修改   cc实例223 读取Access数据库结构...

Global site tag (gtag.js) - Google Analytics