请问这个存储过程怎么改啊,现在它总是报错啊,

misssdf 2010-12-20 01:32:44
ALTER PROCEDURE [dbo].[spMenuList]
(
@UserID INT,
@ParentID int=null,
@PowerValue NVARCHAR(100)=null
)
AS
Select no=Identity(int,1,1),* Into #temptable From
(
SELECT
ModuleID
,Parent_id
,MenuCode
,ModuleName
,Url
,ParentMenuCode
FROM
(
SELECT DISTINCT
ML.ModuleID,
ML.ParentID AS Parent_id,
ML.ModuleName,
ML.PowerPage AS Url,
ML.MenuCode,
ML.ParentMenuCode
FROM Module M
INNER JOIN Module ML ON M.MenuCode LIKE ML.MenuCode + '%'
where M.IsUsed = 1
) AS A
where ((@ParentID is null and Parent_id is null) or (Parent_id=@ParentID and Parent_id is not null))
AND (@PowerValue is null or ModuleID IN (@PowerValue))
) as TableName
Select * From #temptable ORDER BY MenuCode
Drop Table #temptable


错误如下:消息 245,级别 16,状态 1,过程 spMenuList,第 14 行
在将 nvarchar 值 '9,10,11,12,13,14' 转换成数据类型 int 时失败。
exec spMenuList2 @UserID=2,@ParentID=8,@PowerValue='9,10,11,12,13,14'
@PowerValue的值如上是一个字符串,ModuleID的类型是int型,所以会出错,但是我不知道要怎么改这个存储过程,麻烦改下,
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
misssdf 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yhtapmys 的回复:]
SQL code

AND (@PowerValue is null or ModuleID IN (''+@PowerValue+''))
[/Quote]
这个也不对,我给大家跪下了,
yhtapmys 2010-12-20
  • 打赏
  • 举报
回复

AND (@PowerValue is null or ModuleID IN (''+@PowerValue+''))
misssdf 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]
SQL code
AND (@PowerValue is null or ModuleID IN (@PowerValue))

-->改为:

AND (@PowerValue is null or charindex(','+ltrim(ModuleID)+',',','+@PowerValue+',')>0)
[/Quote]
楼上的鲁迅大叔的代码不对,我试过啦,
百年树人 2010-12-20
  • 打赏
  • 举报
回复
AND (@PowerValue is null or ModuleID IN (@PowerValue))

-->改为:

AND (@PowerValue is null or charindex(','+ltrim(ModuleID)+',',','+@PowerValue+',')>0)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧