[当我尝试在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语句时,该过程可以正常编译。
非常感谢您的帮助或提示。
感谢您的帮助,尤其是对马丁·史密斯的帮助。我没有考虑过使用“ else if”会被嵌套。我设法使用更简单的测试脚本来复制错误。我进入187'else if'语句,并使用188's语句导致SQL错误。