错误:SQL语句嵌套太深。在SQL Server中编译存储过程时

问题描述 投票:0回答:1

[当我尝试在SQL Server 2016中编译非常大的存储过程时,出现以下错误:

消息191,级别15,状态1,过程dm_m_proc,第9301行[批处理开始第8行] SQL语句的某些部分嵌套得太深。重写查询或将其分解为较小的查询。

因此,此错误出现在SQL Server本身中(编译存储过程时,我认为它不在我的SQL代码中。

当我在过程中添加一小部分时,就会出现问题。例如,添加以下内容会导致错误:

else if @user_id=0
    begin
        print 42 
    end

这会将else if的数量增加到225,但是它们没有嵌套,它们都是单独的'else if'语句,因此不会发生嵌套。

我不认为存储过程的大小或其他if语句的数目最大。

尽管..当我在现有块中添加if语句时,该过程可以正常编译。

非常感谢您的帮助或提示。

sql sql-server parse-error
1个回答
0
投票

感谢您的帮助,尤其是对马丁·史密斯的帮助。我没有考虑过使用“ else if”会被嵌套。我设法使用更简单的测试脚本来复制错误。我进入187'else if'语句,并使用188's语句导致SQL错误。

© www.soinside.com 2019 - 2024. All rights reserved.