在动态sql语句中如何传递int类型变量

yhuaqiang 2009-04-04 11:18:59
有这样的存储过程
主要是传递LogId 的问题
create PROCEDURE [dbo].[spUpdateItems]
@LogId int,
@Result varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item = ' + @Result +' where Id='+@LogId
exec sp_executesql @sqlString
return

提示类型转换错误
如果改为@LogId varchar(50)
还是提示错误
如何解决?
注:Id字段为int
...全文
449 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yhuaqiang 的回复:]
终于解决了用'''
[/Quote]
不忘结贴啊
yhuaqiang 2009-04-05
  • 打赏
  • 举报
回复
终于解决了用'''
yhuaqiang 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 htl258 的回复:]
SQL codecreate PROCEDURE [dbo].[spUpdateItems]
@LogId int,
@Result varchar(10),
@ItemNo varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item'+ltrim(@ItemNo)+' = ''' + @Result +''' where Id='+ltrim(@LogId)
exec (@sqlString)
go

应该这样,再试一下。
[/Quote]
yhuaqiang 2009-04-05
  • 打赏
  • 举报
回复
如何在@sqlString中将@Result用单引号括起来。要不然不能更新啊
htl258_Tony 2009-04-04
  • 打赏
  • 举报
回复
create PROCEDURE [dbo].[spUpdateItems] 
@LogId int,
@Result varchar(10),
@ItemNo varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item'+ltrim(@ItemNo)+' = ''' + @Result +''' where Id='+ltrim(@LogId)
exec (@sqlString)
go
应该这样,再试一下。
htl258_Tony 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yhuaqiang 的回复:]
还是不行啊。比如传入@ItemNo的值为“合格”,
则提示列名“合格”不存在。这是什么意思啊。
[/Quote]
create PROCEDURE [dbo].[spUpdateItems] 
@LogId int,
@Result varchar(10),
@ItemNo varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set '+ltrim(@ItemNo)+' = ' + @Result +' where Id='+ltrim(@LogId)
exec (@sqlString)
go
yhuaqiang 2009-04-04
  • 打赏
  • 举报
回复
还是不行啊。比如传入@ItemNo的值为“合格”,
则提示列名“合格”不存在。这是什么意思啊。
htl258_Tony 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yhuaqiang 的回复:]
上两楼的答案还是不行啊。还是提示类型转化错误
再说我要列名也是动态的.假设@ITem为001
update T_BusTenCheck set Item'+@ItemNo + ' = ' + @Result +' where Id='+ltrim(@LogId)
[/Quote]

create PROCEDURE [dbo].[spUpdateItems] 
@LogId int,
@Result varchar(10),
@ItemNo varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item'+ltrim(@ItemNo)+' = ' + @Result +' where Id='+ltrim(@LogId)
exec (@sqlString)
go
yhuaqiang 2009-04-04
  • 打赏
  • 举报
回复
上两楼的答案还是不行啊。还是提示类型转化错误
再说我要列名也是动态的.假设@ITem为001
update T_BusTenCheck set Item'+@ItemNo + ' = ' + @Result +' where Id='+ltrim(@LogId)
htl258_Tony 2009-04-04
  • 打赏
  • 举报
回复
create PROCEDURE [dbo].[spUpdateItems] 
@LogId int,
@Result varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item = ' + @Result +' where Id='+ltrim(@LogId)
exec (@sqlString)
go
改成这样。
华芸智森 2009-04-04
  • 打赏
  • 举报
回复
create PROCEDURE [dbo].[spUpdateItems]
@LogId int,
@Result varchar(10)
AS
declare @sqlString nvarchar(100)
set @sqlString = 'update TableName set Item = ' + @Result +' where Id='+cast(@LogId as varchar)
exec sp_executesql @sqlString
return

22,210

社区成员

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

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