【发布时间】:2012-12-18 14:01:44
【问题描述】:
我有一个数据库,其中包含资产列表及其从表“tbl_info”中提取的信息,解决方案在 sql 中签出,但在提交后它不会更新表。我不知道我错在哪里。我对存储过程和 sql 相当陌生。
这是我的代码。
CREATE PROCEDURE [update_TBL_INFO_4]
(@ASSET_NUMBER [nvarchar],
@PORT_NUMBER [nvarchar],
@MACHINE_NAME [nvarchar],
@TYPE [nvarchar],
@BRANCH [nvarchar],
@BUILDING_NUMBER [nvarchar],
@FLOOR [nvarchar],
@ROOM_NUMBER [nvarchar],
@TELEPHONE_NUMBER [nvarchar],
@USERS [nvarchar],
@SERIAL [nvarchar])
AS
BEGIN
UPDATE [datasystems].[dbo].[TBL_INFO]
SET [ASSET_NUMBER] = @ASSET_NUMBER,
[PORT_NUMBER] = @PORT_NUMBER,
[MACHINE_NAME] = @MACHINE_NAME,
[TYPE] = @TYPE,
[BRANCH] = @BRANCH,
[BUILDING_NUMBER] = @BUILDING_NUMBER,
[FLOOR] = @FLOOR,
[ROOM_NUMBER] = @ROOM_NUMBER,
[TELEPHONE_NUMBER] = @TELEPHONE_NUMBER,
[USERS] = @USERS,
[SERIAL] = @SERIAL
WHERE
( [ASSET_NUMBER] = @ASSET_NUMBER AND
[PORT_NUMBER] = @PORT_NUMBER AND
[MACHINE_NAME] = @MACHINE_NAME AND
[TYPE] = @TYPE AND
[BRANCH] = @BRANCH AND
[BUILDING_NUMBER] = @BUILDING_NUMBER AND
[FLOOR] = @FLOOR AND
[ROOM_NUMBER] = @ROOM_NUMBER AND
[TELEPHONE_NUMBER] = @TELEPHONE_NUMBER AND
[USERS] = @USERS AND
[SERIAL] = @SERIAL)
END
GO
【问题讨论】:
-
你的
WHERE子句没有任何意义;每次更新记录的唯一方法是传入的数据与表中的数据相同,最终结果将是没有任何变化。表的主键是什么? -
为什么这个 Q 的所有反对票都投了?
-
所有这些
@PORT_NUMBER [nvarchar],参数都很好,并且正好1 个字符 长...当使用(N)VARCHAR时,您应该始终指定一个参数的显式长度!
标签: asp.net sql-server visual-studio stored-procedures