解决:System.Data.SqlClient.SqlException: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32).

System.Data.SqlClient.SqlException: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为  32 )。

首先看看嵌套的定义:
如:
嵌套1层
select   *    from   
             (
select     *     from    STUDENT )  as  A  

嵌套2层
select   *   from  
            ( 
select   *    from   
                            (
select     *     from    STUDENT )  as  A )  as  B

常犯的错误:
1 .触发器中嵌套调用
  
  
CREATE     TRIGGER    MoniStudentInsert   
  
ON    STUDENT   
  
FOR     INSERT , update   
  
AS
    
BEGIN    
        
update    STUDENT    set    INSTIME = GETDATE ()
        
WHERE     SID = ' 59E89064-8EF9-4719-8293-7F6A3F97D9AF '
    
END
GO

 解决: 应将上面的 
FOR     INSERT , update    中的update去掉.

2 .定义完存储过程后未加Go结束(一般是在多个sql一次执行时出现)
如:
  
IF    EXISTS  ( SELECT   *   FROM  dbo.sysobjects  where  id =   OBJECT_ID (N ' [dbo].[Profu_GetStudentInfo] ' AND  type  in  (N ' P ' , N ' PC ' ))
drop   procedure  Profu_GetStudentInfo
go
create   procedure  Profu_GetStudentInfo
 
@SID   nvarchar ( 20 )
 
as  
begin
 
SELECT   DISTINCT  SNAME,SEX
 
FROM  STUDENT
 
WHERE  SID = @SID
end

exec  Profu_GetStudentInfo  ' 10001 '
GO

解决: 


end

exec  Profu_GetStudentInfo  ' 10001 '
GO
改为:

end
GO
exec  Profu_GetStudentInfo  ' 10001 '

也就是在定义完存储过程后加上 
GO  语句.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值