我创建了一个存储过程,该存储过程返回基于数据库查找和报告路径的报告的相应安全组。如果在路径中找到安全组名称,则返回组名称。例如,如果报告路径是' 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
答案 0 :(得分:3)
您尝试返回int
,这是一个varchar值 - 存储过程必须返回security_group
。
如果您想要select
,则需要return
而不是{{1}}。