一个存储过程的问题

immc1979 2006-02-20 05:59:03
我想写一个适用于各种表单的不同字段(都是varchar型数据)的修改的存储过程,内容如下


create procedure pr_AddData(
@table varchar(50),
@editfield varchar(50),
@editcontent varchar(50),
@keyfield varchar(50),
@keycontent varchar(50)
)as
update @table set @editfield=@editcontent where @keyfield=@keycontent
go

但是提示错误了,请问这个怎么解决
...全文
153 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangaidi 2006-02-22
  • 打赏
  • 举报
回复
有正解了~~呵呵
wgsasd311 2006-02-21
  • 打赏
  • 举报
回复
--就是说,如果输入的内容是or 1=1就会出现安全问题了
create procedure pr_AddData(
@table varchar(50),
@editfield varchar(50),
@editcontent varchar(50),
@keyfield varchar(50),
@keycontent varchar(50)
)as
declare @sql nvarchar(4000)
set @sql='update '+@table+' set '+@editfield+'=@editcontent'
+ 'where '+@keyfield+'=@keycontent'
exec sp_executesql @sql,N'@editcontent varchar(50),@keycontent varchar(50)'
,@editcontent, @keycontent
go
immc1979 2006-02-21
  • 打赏
  • 举报
回复
各位帮我看看啊
zhonghuashen 2006-02-21
  • 打赏
  • 举报
回复
前面都说了 UP一下
immc1979 2006-02-20
  • 打赏
  • 举报
回复
就是说,如果输入的内容是or 1=1就会出现安全问题了
immc1979 2006-02-20
  • 打赏
  • 举报
回复
这样做貌似存在安全隐患啊
wgsasd311 2006-02-20
  • 打赏
  • 举报
回复
--楼主少了引号,字符串要用''括起来
create procedure pr_AddData(
@table varchar(50),
@editfield varchar(50),
@editcontent varchar(50),
@keyfield varchar(50),
@keycontent varchar(50)
)as
exec('update '+@table+' set '+@editfield+'='''+@editcontent+''''
+ 'where '+@keyfield+'='''+@keycontent+'''')
immc1979 2006-02-20
  • 打赏
  • 举报
回复
这样做貌似存在安全隐患啊
skyboy0720 2006-02-20
  • 打赏
  • 举报
回复
create procedure pr_AddData(
@table varchar(50),
@editfield varchar(50),
@editcontent varchar(50),
@keyfield varchar(50),
@keycontent varchar(50)
)as
exec('update '+@table+' set '+@editfield+'='+@editcontent+'
where '+@keyfield+'='+@keycontent)

22,300

社区成员

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

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