急,变量中有单引号问题

redfoxhuang 2003-11-05 03:46:11
CREATE PROCEDURE [UpdateInfo]
@ItemNo_C varchar(255),
@ItemNo_E varchar(256),
@Cname varchar(255),
@id int,
@Tname
AS
declare @string varchar(1000)
select @string='update '+Tname+' set'
exec(@string+' ItemNo_C='''+@ItemNo_C+''',
ItemNo_E='''+@ItemNo_E+''',
Cname='''+@Cname+''',
where id='+@id)

GO
语句可以执行,也是正确的,可是原来存储过程不用考虑单引号的情况变成
需要考虑单引号的了,就是传递的参数如果有'就报错
如何处理呢?程序里面因为有些情况不能改,不能用replace
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
summerain 2003-11-05
  • 打赏
  • 举报
回复
传递的单引号前再加一个单引号
zjcxc 元老 2003-11-05
  • 打赏
  • 举报
回复
--将参数中的单引号替换一下就成了.
CREATE PROCEDURE [UpdateInfo]
@ItemNo_C varchar(255),
@ItemNo_E varchar(256),
@Cname varchar(255),
@id int,
@Tname sysname
AS
declare @string varchar(8000)
select @string='update ['+@Tname+'] set'
+' ItemNo_C='''+replace(@ItemNo_C,'''','''''')+''',
ItemNo_E='''+replace(@ItemNo_E,'''','''''')+''',
Cname='''+replace(@Cname,'''','''''')+''',
where id='+@id
exec(@string)
go
GO
redfoxhuang 2003-11-05
  • 打赏
  • 举报
回复
我试试,谢谢
pengdali 2003-11-05
  • 打赏
  • 举报
回复
CREATE PROCEDURE [UpdateInfo]
@ItemNo_C varchar(255),
@ItemNo_E varchar(256),
@Cname varchar(255),
@id int,
@Tname
AS
select @Cname=replace(@Cname,'''',''''''),@ItemNo_E=replace(@ItemNo_E,'''',''''''),@ItemNo_C=replace(@ItemNo_C,'''','''''')
declare @string varchar(1000)
select @string='update '+Tname+' set'
exec(@string+' ItemNo_C='''+@ItemNo_C+''',
ItemNo_E='''+@ItemNo_E+''',
Cname='''+@Cname+''',
where id='+@id)
GO
redfoxhuang 2003-11-05
  • 打赏
  • 举报
回复
CREATE PROCEDURE [UpdateInfo]
@ItemNo_C varchar(255),
@ItemNo_E varchar(256),
@Cname varchar(255),
@id int,
@Tname
AS
declare @string varchar(1000)
select @string='update '+@Tname+' set'
exec(@string+' ItemNo_C='''+@ItemNo_C+''',
ItemNo_E='''+@ItemNo_E+''',
Cname='''+@Cname+''',
where id='+@id)

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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