为什么我的SQL代码抛出错误

用户名

这就是概念:当用户从前端树形视图中选择用户列表并单击Save按钮时,包含角色到用户的映射的表必须清除具有该角色的所有用户,然后重新插入具有给定角色ID和用户列表。

我正在使用以下存储过程和函数:

存储过程:

ALTER PROCEDURE [dbo].[AssignRoleToUser]
    @RoleID INT = 0,
    @UserID varchar(max) = ''
AS
BEGIN
   delete from UserRole 
   where RoleID = @RoleID 
     AND UserID IN (SELECT UserID FROM UserRole)

   INSERT INTO UserRole(UserID, RoleId) 
      SELECT id, @RoleID 
      FROM dbo.CSVToTable(@UserID)
END

功能

CREATE FUNCTION [dbo].[CSVToTable] (@InStr VARCHAR(MAX))
RETURNS @TempTab TABLE (id int not null)
AS
BEGIN
    ;-- Ensure input ends with comma
    SET @InStr = REPLACE(@InStr + ',', ',,', ',')

    DECLARE @SP INT
    DECLARE @VALUE VARCHAR(1000)

    WHILE PATINDEX('%,%', @INSTR ) <> 0 
    BEGIN
       SELECT  @SP = PATINDEX('%,%',@INSTR)
       SELECT  @VALUE = LEFT(@INSTR , @SP - 1)
       SELECT  @INSTR = STUFF(@INSTR, 1, @SP, '')

       INSERT INTO @TempTab(id) VALUES (@VALUE)
    END

    RETURN
END     

但是我得到这个错误

消息217,级别16,状态1,过程AssignRoleToUser,第7行超出了
最大存储过程,函数,触发器或视图嵌套级别(限制32)。

拉胡尔

错误恰恰是在说出下面的错误以及行号。

Msg 217, Level 16, State 1, Procedure AssignRoleToUser, Line 7

从您的程序中取出第7行 AssignRoleToUser

INSERT INTO UserRole(UserID, RoleId) SELECT id, @RoleID 
FROM  dbo.CSVToTable(@UserID)

可以看出,它正在调用另一个名为的函数dbo.CSVToTable同样,dbo.CSVToTable可能正在调用其他过程/函数,这就是嵌套深度达到最大限制的方式。错误是这样。

同样,AND UserID IN (Select UserID from UserRole)不需要您的过程中的第6行这使得它如下

delete from UserRole where RoleID = @RoleID  

您可以运行以下查询,该查询将列出在运行AssignRoleToUser过程时在链中被调用的所有过程(从“获取所有嵌套存储过程”中观察到的查询

SELECT  * FROM 
(SELECT  NAME AS ProcedureName, SUBSTRING(( SELECT  ', ' + OBJDEP.NAME
FROM    sysdepends
        INNER JOIN sys.objects OBJ ON sysdepends.ID = OBJ.OBJECT_ID
        INNER JOIN sys.objects OBJDEP ON sysdepends.DEPID = OBJDEP.OBJECT_ID
WHERE obj.type = 'P'
AND Objdep.type = 'P'
AND sysdepends.id = procs.object_id
ORDER BY OBJ.name

FOR
XML PATH('')
), 2, 8000) AS NestedProcedures
FROM sys.procedures  procs )InnerTab
WHERE NestedProcedures IS NOT NULL
AND NAME = 'AssignRoleToUser'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码会抛出错误消息?

来自分类Dev

为什么我的脚本抛出错误?

来自分类Dev

为什么我的 SQL 代码会抛出转换错误?

来自分类Dev

当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

来自分类Dev

Java / Eclipse我的main中没有代码,并且main抛出错误,为什么?

来自分类Dev

为什么代码抛出错误“变量”未定义

来自分类Dev

为什么我的javascript函数没有抛出错误?

来自分类Dev

为什么我的Ajax请求总是抛出错误?

来自分类Dev

为什么qRegisterMetaType抛出错误?

来自分类Dev

为什么gStreamer从Waylandsink抛出错误?

来自分类Dev

为什么django passwordresetview抛出错误?

来自分类Dev

为什么qRegisterMetaType抛出错误?

来自分类Dev

为什么getSafeHTML()抛出错误?

来自分类Dev

尝试抛出错误,但为什么呢?

来自分类Dev

为什么我的代码在SPOJ上给出错误的答案?

来自分类Dev

为什么我的代码为变量给出错误的值?

来自分类Dev

为什么当我调用冠状病毒API时我的应用抛出错误?

来自分类Dev

为什么我的代码不断抛出KeyError?

来自分类Dev

为什么我的Frame子类在初始化中抛出错误?

来自分类Dev

为什么我们执行$ NULL =“ FOO”时Powershell不会抛出错误?

来自分类Dev

为什么AngularJS抛出错误的扩充错误

来自分类Dev

C ++,Shared_ptr,请告诉我为什么我的代码给出错误?

来自分类Dev

我的代码输出错误,我不明白为什么

来自分类Dev

为什么[[NSError alloc] init]; 在Xcode中抛出错误?

来自分类Dev

为什么IE在此行上抛出错误?

来自分类Dev

为什么分号在React JSX中抛出错误?

来自分类Dev

为什么在使用本地存储时抛出错误

来自分类Dev

为什么socket.setNoDelay()抛出错误?

来自分类Dev

为什么DOMDocument :: load(“ local file”)从getaddrinfo抛出错误?

Related 相关文章

  1. 1

    为什么我的代码会抛出错误消息?

  2. 2

    为什么我的脚本抛出错误?

  3. 3

    为什么我的 SQL 代码会抛出转换错误?

  4. 4

    当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

  5. 5

    Java / Eclipse我的main中没有代码,并且main抛出错误,为什么?

  6. 6

    为什么代码抛出错误“变量”未定义

  7. 7

    为什么我的javascript函数没有抛出错误?

  8. 8

    为什么我的Ajax请求总是抛出错误?

  9. 9

    为什么qRegisterMetaType抛出错误?

  10. 10

    为什么gStreamer从Waylandsink抛出错误?

  11. 11

    为什么django passwordresetview抛出错误?

  12. 12

    为什么qRegisterMetaType抛出错误?

  13. 13

    为什么getSafeHTML()抛出错误?

  14. 14

    尝试抛出错误,但为什么呢?

  15. 15

    为什么我的代码在SPOJ上给出错误的答案?

  16. 16

    为什么我的代码为变量给出错误的值?

  17. 17

    为什么当我调用冠状病毒API时我的应用抛出错误?

  18. 18

    为什么我的代码不断抛出KeyError?

  19. 19

    为什么我的Frame子类在初始化中抛出错误?

  20. 20

    为什么我们执行$ NULL =“ FOO”时Powershell不会抛出错误?

  21. 21

    为什么AngularJS抛出错误的扩充错误

  22. 22

    C ++,Shared_ptr,请告诉我为什么我的代码给出错误?

  23. 23

    我的代码输出错误,我不明白为什么

  24. 24

    为什么[[NSError alloc] init]; 在Xcode中抛出错误?

  25. 25

    为什么IE在此行上抛出错误?

  26. 26

    为什么分号在React JSX中抛出错误?

  27. 27

    为什么在使用本地存储时抛出错误

  28. 28

    为什么socket.setNoDelay()抛出错误?

  29. 29

    为什么DOMDocument :: load(“ local file”)从getaddrinfo抛出错误?

热门标签

归档