您的位置:首页 > 数据库

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

2008-03-12 12:31 706 查看
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 语句.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐