通过一个存储过程,删除一个表中的记录。
存储过程的输入参数为表名,字段名,值。
create proc p_test
@tbl nvarchar(40),
@field nvarchar(40),
@value nvarchar(40)
as
delete from @tbl where @field=@value
go编译不通过,存储过程中的delete语句有问题。不知道该如何写?

解决方案 »

  1.   

    注意数据类型的转换:
    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 行受影响)
    */