存诸过程问题--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 的列时发生语法错误。
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,210

社区成员

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

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