存储过程遇到了一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 01:56:12
我用一个存储过程(updatenews)写了2个事件(更新和删除),
CREATE PROCEDURE updatenews
(
@id int,
@pwd nvarchar(50),
@action nvarchar(50)
)
as
if(@action='upd')
begin
update admin set pwd=@pwd where id=@id
end
else if(@action='del')
begin
delete admin where id=@id
end
GO
我用cmd.Parameters.Add传参数进来,现在点击更新可以更新,但是点删除的时候有错误,说什么存储过程里定义了@pwd,但是没有接收到pwd,因为我的意思是删除本来就是删除主键,pwd根本就不需要传进去,所以我在删除的事件里随便加了
cmd.Parameters.Add("@pwd", SqlDbType.NVarChar);

cmd.Parameters["@pwd"].Value ="11111";
让他不报错,可是现在点了删除就跟点刷新一样,点了没反映了,想了好久不知道怎么解决呢

应该不是存储过程的问题
你这样的写法没有问题

“让他不报错,可是现在点了删除就跟点刷新一样,点了没反映了,想了好久不知道怎么解决呢“

这个问题应该是数据库里面已经删除了 但是你没有刷新页面数据

重新绑定一下(如果是用的.NET某个数据控件)
那么
//。。。。你的删除方法
然后...////你绑定数据的方法

比如

public void BinderData()绑定数据方法
{
.....
}

public void DeleteData()删除方法
{
。。。。
执行之后
BinderData();执行绑定方法
}

我要是你.就把更新.删除.插入等.存储过程分开了写....

敢问这位老兄,这个存储过程为啥要这样写?
这样似乎对简化你的代码并没有什么好处。而且会使代码逻辑性下降
虽然貌似语法上没有错误。
点删除没有效果可能是楼上所说的原因,我建议你检查一下数据库中数据是否有变化。

存储过程最好分开写,程序可读性高