如何在存储过程中实现删除表中记录的功能?

zwzw911 2011-02-09 12:05:16
通过一个存储过程,删除一个表中的记录。
存储过程的输入参数为表名,字段名,值。
create proc p_test
@tbl nvarchar(40),
@field nvarchar(40),
@value nvarchar(40)
as
delete from @tbl where @field=@value
go

编译不通过,存储过程中的delete语句有问题。不知道该如何写?
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2011-02-09
  • 打赏
  • 举报
回复
注意数据类型的转换:
create table tb(id int,col nvarchar(20))
insert into tb select 1,'aaaa' union select 2,'bbbb' union select 3,'cccc'
go
create proc p_test
@tbl nvarchar(40),
@field nvarchar(40),
@value nvarchar(40)
as
declare @sql nvarchar(4000)
set @sql='delete from '+@tbl+' where '+@field+'='''+@value+''''
exec(@sql)
go
exec p_test 'tb','col','bbbb'
select * from tb
go
drop proc p_test
drop table tb
/*
id col
----------- --------------------
1 aaaa
3 cccc

(2 行受影响)
*/
zwzw911 2011-02-09
  • 打赏
  • 举报
回复
哦,忘记还有动态语句这一说
-晴天 2011-02-09
  • 打赏
  • 举报
回复
用动态语句.

22,209

社区成员

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

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