CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

今天我碰到了一个超级奇怪的问题,关于SQL存储过程的,希望赐教!!!

楼主sdpjeff(小笨蛙)2005-08-03 10:58:59 在 MS-SQL Server / 应用实例 提问

今天我修改了一个存储过程,该存储过程的功能是删除几个相关表里的数据.前面几行是删除某些表的,我把后面几行的SQL语句修改一次.  
  一执行,结果是前面几行的SQL语句正常执行了,删除了表里的数据,但是我改过的那几行SQL语句却没有去删除另外几个表里的数据.我把那几行SQL语句放到查询分析器里去执行,结果成功删除了那些表里的数据.  
  这到底是怎么回事啊???为什么在存储过程里SQL语句执行不了,放在查询分析器里却成功执行了.  
  请各位赐教!!!  
  问题点数:20、回复次数:7Top

1 楼huangjianyou(小健)回复于 2005-08-03 11:06:21 得分 0

建议你应该把存储过程贴出来的,这样大家才看清楚是否有问题。  
   
  ^_^Top

2 楼WuChenCan(雨中男孩)回复于 2005-08-03 11:29:00 得分 0

是啊,把程序贴出来看看呀Top

3 楼sdpjeff(小笨蛙)回复于 2005-08-03 11:51:28 得分 0

CREATE         PROC   DeleteProject  
  @ProjectID   int  
   
  AS  
  declare   @StrID   varchar(5000)  
  declare   @StrSQL   varchar(5000)  
  set   @StrID=''  
  set   @StrSQL=''  
  IF   @ProjectID   <>1    
  BEGIN  
                  delete   from   JobReport   where   JobReportID=@ProjectID    
                  delete   from   JobPlan   wehre   JobPlanID=@ProjectID    
   
                  DELETE   FROM   ProjectProcedureInfo   WHERE   ID=@ProjectID   AND   Type=0  
   
                              select   @StrID=@StrID+convert(varchar,ID)+','     from   ProjectProcedure_Component     where   ComponentID    
                              in   (select   ComponentID   from   Project_Component   where   ProjectID=@ProjectID   )  
                               
                                if   len(@StrID)>0  
                                      begin  
                                                SET   @StrID   =   LEFT(@StrID,LEN(@StrID)-1)  
                                                set   @StrSQL='delete   from     ProjectProcedureInfo   where   ID   in   ('+@StrID+')   and   Type=1'  
                                                  EXEC(@StrSQL)  
                                      end    
                                delete     from   ProjectProcedure_Component   where   ComponentID   in   (select   ComponentID   from   Project_Component   where   ProjectID=@ProjectID   )  
                                delete     from     Project_Component   where   ProjectID=@ProjectID    
  END  
  GO  
  Top

4 楼sdpjeff(小笨蛙)回复于 2005-08-03 11:53:24 得分 0

delete   from   JobReport   where   JobReportID=@ProjectID    
                  delete   from   JobPlan   wehre   JobPlanID=@ProjectID    
  上面两句执行是成功的  
   
  这两举下面那些语句就无法执行了  
  但是我把后面那部分SQL语句拷贝到查询分析器里执行却是成功的Top

5 楼huangjianyou(小健)回复于 2005-08-03 12:03:41 得分 0

DELETE   FROM   ProjectProcedureInfo   WHERE   ID=@ProjectID   AND   Type=0  
  变为:  
  DELETE   FROM   ProjectProcedureInfo   WHERE   [ID]=@ProjectID   AND   Type=0  
  试试。  
   
  ^_^Top

6 楼sdpjeff(小笨蛙)回复于 2005-08-03 12:17:06 得分 0

谢谢各位的指教,问题已经解决了,我把后面无法执行的语句调到最前面,结果就执行正确了,不知道为什么会那样,呵呵Top

7 楼WuChenCan(雨中男孩)回复于 2005-08-03 12:33:15 得分 0

可能是你在表之间设置了级联或表中创建了DELETE触发器吧Top

相关问题

  • SQL server的存储过程
  • SQL Server存储过程
  • sql存储过程问题
  • Oracle的存储过程与MS SQL Server的存储过程
  • Oracle的存储过程如何转成SQL Server存储过程
  • 求教,SQL存储过程移植到——oracle存储过程。
  • ======超级查询(存储过程)==================
  • 关于sql server 7.0的存储过程
  • SQL存储过程的写法问题
  • 关于sql server 和存储过程

关键词

  • 语句
  • 存储过程
  • 执行
  • 分析器
  • 数据
  • component
  • 查询
  • sql
  • projectid
  • strid

得分解答快速导航

  • 帖主:sdpjeff

相关链接

  • SQL Server类图书

广告也精彩

反馈

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