CREATE PROCEDURE Sp_IU_Group(
GID int,
GroupName nvarchar(200),
UserID int,
Status int
)
BEGIN
IF GID=0 THEN
Insert into tblGroup (GroupName,UserID,Status)
values (GroupName,UserID,Status);
else
update tblGroup set GroupName=GroupName,UserID=UserID,Status=Status WHERE GID=GID;
END IF;
END
答案 0 :(得分:0)
此查询:
update tblGroup set GroupName=GroupName,UserID=UserID,Status=Status WHERE GID=GID
将更新表格中的每条记录... 自身。这匹配每条记录,因为总是为真:
WHERE GID=GID
这会将值更新为:
GroupName=GroupName
问题在于您为多件事情使用相同的名称。给出不同的名字。像这样简单:
CREATE PROCEDURE Sp_IU_Group(
GIDNew int,
GroupNameNew nvarchar(200),
UserIDNew int,
StatusNew int
)
(或者使用您想要将变量与数据库对象区分开来的任何其他标准,例如将它们添加到@
之类的特殊字符。)
然后查询可以区分:
update tblGroup set GroupName=GroupNameNew,UserID=UserIDNew,Status=StatusNew WHERE GID=GIDNew
(当然,相应地修改新变量名的其余存储过程。)
基本上,作为一般的经验法则,永远不要依赖代码来了解你的意思"。始终明确无误。