一个存储过程的问题

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

但是提示错误了,请问这个怎么解决
...全文
115 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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)
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-02-20 05:59
社区公告
暂无公告