存储过程取得参数的问题

???2008 2004-07-24 11:23:59



CREATE PROCEDURE baili_GetAuthority
(
@RoleID nvarchar,
@PageID int
)

AS

SELECT * from Authority WHERE RoleID IN (@RoleID) AND PageID = @PageID
GO
我调用该存储过程时,使用exec baili_GetAuthority "4,1", 2 时发现少了一些记录。我用
PRINT @RoleID
PRINT @PageID
查看一下参数情况,发现@RoleID只得到了"4"而后面的"1"少掉了。请问这个怎么解决?谢谢。

...全文
65 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zjcxc 元老 2004-07-24
--or

CREATE PROCEDURE baili_GetAuthority
(
@RoleID nvarchar,
@PageID int
)

AS
declare @s varchar(8000)
set @s='SELECT * from Authority WHERE RoleID in('+@RoleID+') AND PageID = '+cast(@PageID as varchar)
exec(@s)
GO
  • 打赏
  • 举报
回复
zjcxc 元老 2004-07-24
CREATE PROCEDURE baili_GetAuthority
(
@RoleID nvarchar,
@PageID int
)

AS

SELECT * from Authority WHERE charindex(','+cast(RoleID as varchar)+',',','+@RoleID+',')>0 AND PageID = @PageID
GO
  • 打赏
  • 举报
回复
???2008 2004-07-24
4,1
2
服务器: 消息 245,级别 16,状态 1,过程 baili_GetAuthority,行 12
将 varchar 值 '4,1' 转换为数据类型为 int 的列时发生语法错误。
我想是由于WHERE RoleID IN("4,1")这样的格式出错的。
但是怎么转换为WHERE RoleID IN(4,1)呢?
  • 打赏
  • 举报
回复
zheninchangjiang 2004-07-24
CREATE PROCEDURE baili_GetAuthority
(
@RoleID nvarchar(3) , --len('4,1' )=3,在这种变量定义中,如果缺省长度,默认为 1
@PageID int
)
  • 打赏
  • 举报
回复
netcoder 2004-07-24
exec('SELECT * from Authority WHERE RoleID IN (' + @RoleID + ') AND PageID = ' + @PageID)
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-07-24 11:23
社区公告
暂无公告