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

关于调用存储过程的异常问题

楼主moverfan()2006-06-03 09:59:23 在 MS-SQL Server / 疑难问题 提问

我在JAVA中用存储过程出现如下错误:  
  [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为   32)。  
   
   
  代码大致如下:  
   
  String   SQL="{call   MOVER_MOULD_APPEND(7,0,1,'Mover','aaaaaaaaa','aaaaaaaaaaa',0,0,'null','2006-06-03   8:23:02')}"  
  ...  
  Operator.prepareCall(SQL);  
  try  
  {  
  int   number=Operator.getCallableStatement().executeUpdate();  
  if(number<=0)  
  {  
                    event.write("append()数据追加失败:"+SQL);  
                    inserted=false;  
  }  
  else    
  {  
                    event.write("append()数据追加成功:"+SQL);  
                    inserted=true;  
  }  
   
  }  
  catch   (java.sql.SQLException   se)  
  {  
                    event.write(se.getMessage());  
  }  
  finally  
  {  
                    Operator.Close();  
  }  
   
   
  这个问题困扰我一天了。原因在哪,如何解决?  
   
  问题点数:30、回复次数:23Top

1 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-06-03 10:02:24 得分 10

--在数据库测试存储过程,有报告错误吗?Java   不会.Top

2 楼moverfan()回复于 2006-06-03 10:07:10 得分 0

在查询分析器里运行以下语句,错误是一样的。  
   
  {call   MOVER_MOULD_APPEND(7,0,1,'Mover','aaaaaaaaa','aaaaaaaaaaa',0,0,'null','2006-06-03   8:23:02')}  
   
  这是创建存储过程的语句,你可以试一下,谢谢。  
   
  CREATE   PROCEDURE   MOVER_MOULD_APPEND   @id   int,@classid   int,@userid   int,@author   varchar(255),@caption   varchar(255),@content   text,@$default   int,@recommend   int,@picture   varchar(255),@date   varchar(255)   AS   INSERT   INTO   MOVER_MOULD   VALUES(@id,@classid,@userid,@author,@caption,@content,@$default,@recommend,@picture,@date)Top

3 楼moverfan()回复于 2006-06-03 10:10:59 得分 0

我看到过相关的贴子,曾有人说是触发器的问题,可是我已经去掉选项中的“递归触发器”,怎么还有这种现象呢,我初次接触存储过程,有些问题问得可能比较弱智,呵呵,请指点,感激不尽!Top

4 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-06-03 10:23:36 得分 0

--先禁用下你的触发器,再测试下.  
  alter   table   MOVER_MOULD       DISABLE   TRIGGER   触发器名称Top

5 楼moverfan()回复于 2006-06-03 10:31:14 得分 0

我没有创建任何触发器呀Top

6 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-06-03 10:38:51 得分 0

--你的存储过程没有问题.也不可能出现递归调用错误的.Top

7 楼moverfan()回复于 2006-06-03 10:44:28 得分 0

可是偏偏就存在这种错误,唉,这会是哪方面的原因呢?Top

8 楼moverfan()回复于 2006-06-03 10:45:37 得分 0

以下是在查询分析器中产生的错误报告:  
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
  服务器:   消息   217,级别   16,状态   1,过程   MOVER_MOULD_APPEND,行   2  
  超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为   32)。  
  Top

9 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-06-03 10:48:28 得分 0

--存储过程没有循环,怎么可能影响到这么多行呢??  
   
  --如果没有触发器,你测试存储过程的时候,只能影响到一行数据的....Top

10 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 10:48:56 得分 10

CREATE   PROCEDURE   MOVER_MOULD_APPEND   @id   int,@classid   int,@userid   int,@author   varchar(255),@caption   varchar(255),@content   text,@$default   int,@recommend   int,@picture   varchar(255),@date   varchar(255)   AS   INSERT   INTO   MOVER_MOULD   VALUES(@id,@classid,@userid,@author,@caption,@content,@$default,@recommend,@picture,@date)  
   
  存儲過程只有這一句代碼??  
   
  你先禁用觸發器試試看看。Top

11 楼cosio()回复于 2006-06-03 10:52:22 得分 10

把存储过程的代码贴出来看看Top

12 楼cosio()回复于 2006-06-03 10:53:34 得分 0

应该是where的条件没有写死,所以影响到多行!Top

13 楼moverfan()回复于 2006-06-03 11:01:55 得分 0

To   zlp321002(龙卷风2006)   :  
  没有触发器的.  
   
  To   paoluo(一天到晚游泳的鱼):  
  只有这一行  
   
  To   cosio:  
  贴出来了啊Top

14 楼moverfan()回复于 2006-06-03 11:04:02 得分 0

To   paoluo(一天到晚游泳的鱼)    
  如何禁用?  
  引用龙卷风:  
  --先禁用下你的触发器,再测试下.  
  alter   table   MOVER_MOULD       DISABLE   TRIGGER   触发器名称  
   
  触发器名称是什么?  
  Top

15 楼moverfan()回复于 2006-06-03 11:07:43 得分 0

To   cosio:  
  新插入一行应该不需要条件吧?Top

16 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 11:09:00 得分 0

企業管理器中,選中你的表,點右鍵,選擇“所有工作”->“管理觸發程序”,在出來的對話框中,選擇“名稱”後的下拉菜單,看看有沒有東西,那裡就是你的觸發器名稱。Top

17 楼moverfan()回复于 2006-06-03 11:20:28 得分 0

里面啥也没有,只有一个新建项Top

18 楼moverfan()回复于 2006-06-03 11:29:11 得分 0

搞定了,对不住大家了。原因是:我手工创建了一个MOVER_MOULD_APPEND存储过程,里面还包含了一句调用存储过程的语句。所以导致死循环。为感谢大家的帮助,我要散分了。  
  Top

19 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 11:32:43 得分 0

暈Top

20 楼moverfan()回复于 2006-06-03 11:36:14 得分 0

我想给每人5分怎么给不了?Top

21 楼moverfan()回复于 2006-06-03 11:38:00 得分 0

我不是有意的~初次接触易范低级错误,请谅解。Top

22 楼moverfan()回复于 2006-06-03 11:43:08 得分 0

公平起见,每人发10分,嘿嘿Top

23 楼lshlfyf()回复于 2006-06-04 09:14:56 得分 0

对Top

相关问题

关键词

得分解答快速导航

  • 帖主:moverfan
  • zlp321002
  • paoluo
  • cosio

相关链接

  • SQL Server类图书

广告也精彩

反馈

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