存储过程错误 - 将varchar转换为int

时间:2018-03-23 16:15:10

标签: sql-server tsql stored-procedures

我创建了一个存储过程,该存储过程返回基于数据库查找和报告路径的报告的相应安全组。如果在路径中找到安全组名称,则返回组名称。例如,如果报告路径是' http://reportserver/Reports/report/Accounting'和'会计'在查找表中找到,它返回' Accounting'。我收到一条错误消息,指出我正在尝试将varchar值转换为int,但我不知道它将来自哪里。任何人都可以看到它将转换为整数的位置吗?

ALTER PROCEDURE [dbo].[report_bus_unit_access] 
    @rpt_path NVARCHAR(200) 
AS
BEGIN
   SET NOCOUNT ON;

   DECLARE @rowcount int;
   DECLARE @i int;      
   DECLARE @secgroup varchar(20);

   SET @i = 1;      

   SELECT id = identity(int, 1, 1), a.* 
   INTO #secgroup 
   FROM 
       (SELECT DISTINCT security_group 
        FROM BPOCOM.dbo.report_groups 
        WHERE security_group IS NOT NULL) AS a

   SELECT @rowcount = COUNT(1) FROM #secgroup;

   WHILE (@i <= @rowcount)
   BEGIN
       SELECT @secgroup = security_group 
       FROM #secgroup 
       WHERE id = @i            

       IF PATINDEX('%' + LOWER(@secgroup) + '%', LOWER(@rpt_path)) <> 0
       BEGIN
           RETURN @secgroup                 
       END

       SET @i = @i + 1
   END
END

1 个答案:

答案 0 :(得分:3)

您尝试返回int,这是一个varchar值 - 存储过程必须返回security_group

如果您想要select,则需要return而不是{{1}}。