存诸过程问题--50分

mytail001 2006-03-21 11:18:37
存诸过程问题
ALTER procedure sp_AdminRoleUpdate
(
@@RoleID int,
@RoleName varchar(100),
@RoleValue varchar(300)
)
as
declare @strSql nvarchar(500)
set @strSql='update RoleTb set RoleName='''+@RoleName+''',RoleValue='''+@RoleValue+''' where RoleID='''+@@RoleID

print @strSql
execute sp_executesql @strSql

RoleID是int型的,为什么存储过程调试的时候说类型不对,
服务器: 消息 245,级别 16,状态 1,过程 sp_AdminRoleUpdate,行 11
[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 'update RoleTb set RoleName='sss',RoleValue='sss' where RoleID='' 转换为数据类型为 int 的列时发生语法错误。
...全文
51 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mytail001 2006-03-21
搞定了,不明白为什么,把它转为字符呢,RoleID是int?


回复
zlp321002 2006-03-21
--TRY
alter procedure sp_AdminRoleUpdate
(
@@RoleID int,
@RoleName varchar(100),
@RoleValue varchar(300)
)
as
declare @strSql nvarchar(500)
set @strSql='update RoleTb set RoleName='''+@RoleName+''',RoleValue='''+@RoleValue+''' where RoleID='+CAST(@@RoleID AS VARCHAR)

print @strSql
execute sp_executesql @strSql
回复
mytail001 2006-03-21
服务器: 消息 245,级别 16,状态 1,过程 sp_AdminRoleUpdate,行 11
[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 'update RoleTb set RoleName='sss',RoleValue='sss' where RoleID=' 转换为数据类型为 int 的列时发生语法错误。

老样子,','',''',''''
这些都试过了,
回复
hnhn 2006-03-21
ALTER procedure sp_AdminRoleUpdate
(
@@RoleID int,
@RoleName varchar(100),
@RoleValue varchar(300)
)
as
declare @strSql nvarchar(500)
set @strSql='update RoleTb set RoleName='''+@RoleName+''',RoleValue='''+@RoleValue+''' where RoleID='+@@RoleID

print @strSql
execute sp_executesql @strSql
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-21 11:18
社区公告
暂无公告