CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

新手,求一存储过程,实现判断表中某记录一字段值,如大于某值时执行删除,否则执行更新

楼主qpgsd(青苹果)2006-03-17 22:01:51 在 MS-SQL Server / 基础类 提问

如题.  
   
  我有一数据表TestTable,包含字段:ID,TryTimes......  
   
  另有一数据表TestTable1,字段跟数据表TestTable相同  
   
  现要求弄一存储过程,传入参数为@ID,要求实现以下功能:  
   
          根据@ID查询到表TestTable中对应记录的TryTimes值,判断该值是否大于等于5,如果是,则将该条记录复制至TestTable1表,同时在TestTable中删除.如小于5,则执行更新语句,将表TestTable中该记录TryTimes值+1.  
   
   
  SET   ANSI_NULLS   ON  
  GO  
  SET   QUOTED_IDENTIFIER   ON  
  GO  
  CREATE   PROCEDURE   [dbo].[Proc_Try]  
  (@ID   int=0)  
  AS  
  BEGIN  
  SET   NOCOUNT   ON;  
  DECLARE   @TryTimes   int    
   
  ...........   //这块不知如何弄,将表TestTable中的ID=@ID的记录字段TryTimes值赋给@TryTimes  
   
  IF   @TryTimes   <=0    
        UPDATE   TestTable   set   TryTimes=TryTimes+1   where   ID=@ID  
  ELSE  
                BEGIN    
        INSERT   INTO   TestTable1(TryTimes)   SELECT   TryTimes+1   FROM   TestTable   WHERE   ID=@ID;  
                DELETE   FROM   TestTable   WHERE   ID=@ID;  
                END  
  END  
  问题点数:20、回复次数:4Top

1 楼lalakid(梦想总是那么美好……)回复于 2006-03-17 22:14:34 得分 20

被你搞糊涂了  
  还是说具体想控制什么吧Top

2 楼qpgsd(青苹果)回复于 2006-03-17 22:22:21 得分 0

呵呵,开始问的问题解决了.  
  使用这句:  
  SET   @TryTimes=(SELECT   TryTimes   FROM   TestTable   where   ID=@ID)  
   
  但,新的问题出来了.  
  IF,ELSE中包含的语句怎么写?语法是怎样的?Top

3 楼qpgsd(青苹果)回复于 2006-03-17 22:53:02 得分 0

SET   ANSI_NULLS   ON  
  GO  
  SET   QUOTED_IDENTIFIER   ON  
  GO  
  CREATE   PROCEDURE   [dbo].[Proc_Try]  
  (@ID   int=0)  
  AS  
  BEGIN  
  SET   NOCOUNT   ON;  
   
  DECLARE   @TryTimes   int    
   
  set   @TryTimes=(select   TryTimes   from   sWait   where   ID=@ID)  
   
  IF   @TryTimes<=5  
          BEGIN  
        UPDATE   sWait   set   TryTimes   =   TryTimes+1   where   ID=@ID;  
          END  
  ELSE  
          BEGIN  
                  INSERT   INTO   sFailure(TryTimes)   SELECT   TryTimes+1   FROM   sWait   WHERE   ID=@ID;  
                  DELETE   FROM   sWait   WHERE   ID=@ID;  
          END  
  END  
   
  麻烦帮忙看看,这句话有什么错误?Top

4 楼qpgsd(青苹果)回复于 2006-03-17 23:32:40 得分 0

我晕了.太不可思议了.  
  出错原因竟然是:UPDATE那句前面有空格.将空格去掉后,全部错误都消失了.  
   
  贴出来分享.前4个站出来顶者送分.Top

相关问题

  • 存储过程取字段值遇到问题
  • 关于存储过程中的输出参数取某字段值
  • 请问:存储过程执行后如何如何获得Identity字段的值
  • 在触发器中怎么把 inserted表里的字段值 以参数形式 传给 一个存储过程 ??
  • dc0001这样的字段值怎么弄,下一个就是dc0002,用存储过程怎么写?
  • 存储过程中如何将视图中的字段的值付给一个变量
  • 在存储过程里有办法取到update这条记录的被更新的这个字段的值吗?
  • 想在存储过程中新增记录,并反回的他的之中的一个字段的值???
  • 能否用一个SQL语句或存储过程修改一个字段中的部分值?
  • 如何在存储过程中将查询结果集中的某一字段值(字符串)合并起来?

关键词

  • 字段
  • 执行
  • trytimes
  • testtable
  • 记录
  • 数据表

得分解答快速导航

  • 帖主:qpgsd
  • lalakid

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo