这个存储过程该怎么改?

foyuan 2005-04-03 01:01:25
CREATE PROCEDURE dbo.UpdateStuRegBySetField
@studentid varchar(50),
@setvalue varchar(255)
AS
exec("update stu_register set "+@setvalue+" where studentid=@studentid")
GO

其中的@studentid要加上'',否则就会说类型转换错误,怎么办呢?我改了很多次都不行,高手帮忙了。谢谢
...全文
95 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccat 2005-04-03
  • 打赏
  • 举报
回复
再出错的话,把exec改成Print,看看输出的字符串是什么,就知道错在哪里了。
ccat 2005-04-03
  • 打赏
  • 举报
回复
把单引号写在双引号里面就好了。
DeltaCat 2005-04-03
  • 打赏
  • 举报
回复
CREATE PROCEDURE dbo.UpdateStuRegBySetField
@studentid varchar(50),
@setvalue varchar(255)
AS
exec('update stu_register set ' + @setvalue + ' where studentid=''' + @studentid + '''')
GO
lanxe 2005-04-03
  • 打赏
  • 举报
回复
如果@studentid varchar(50),变成 @studentid int的话,
就要写成
exec('update stu_register set '+@setvalue+' where studentid='+ LTRIM(@studentid))
lanxe 2005-04-03
  • 打赏
  • 举报
回复
exec('update stu_register set '+@setvalue+' where studentid='+@studentid)
foyuan 2005-04-03
  • 打赏
  • 举报
回复
楼上的方法不行啊,因为类型转换出错,这样sql会把@studentid当作数字类型的处理,说int行益处
DeltaCat 2005-04-03
  • 打赏
  • 举报
回复
CREATE PROCEDURE dbo.UpdateStuRegBySetField
@studentid varchar(50),
@setvalue varchar(255)
AS
exec("update stu_register set "+@setvalue+" where studentid=" + @studentid)
GO
foyuan 2005-04-03
  • 打赏
  • 举报
回复
up
killerliu 2005-04-03
  • 打赏
  • 举报
回复
exec('update stu_register set '+@setvalue+' where studentid='''+@studentid+'''')
上面少加了个+号
killerliu 2005-04-03
  • 打赏
  • 举报
回复
exec('update stu_register set '+@setvalue+' where studentid='''+@studentid'''')

还有set '+@setvalue+' 这个地方我很迷惑,好象没这么写过,如果是更新的话起码也应该是
set ***='+@setvalue+'才对啊
applelppa 2005-04-03
  • 打赏
  • 举报
回复
sql中字符串用单引号括起来,用两个单引号作字符转义 ('')

---------------------------------------------
二十年来家国
三千里地山河
凤阁龙吟连霄汉
几曾识干戈


110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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