"tbl_info"테이블에서 가져온 애셋 목록 및 해당 정보가 포함 된 db가 있으며 솔루션은 제출 후 테이블을 업데이트하지 않지만 SQL에서는 체크 아웃합니다. 내가 틀린 곳을 모른다. 나는 저장 프로 시저와 괜찮은 w/sql에 상당히 익숙하다.저장 프로 시저를 사용하여 테이블 정보 업데이트
여기 내 코드가 있습니다. 그 중 하나가 다른 경우 (업데이트 된 값을 전달하는 경우 즉,) 당신의 WHERE
절 검사 params 객체를 파라미터의 모든 이후
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 절은 의미가 없습니다. 레코드가 업데이트 될 수있는 유일한 방법은 전달 된 데이터가 테이블에있는 것과 동일한 경우이며, 결과는 아무 것도 변경되지 않는다는 것입니다. 테이블의 기본 키는 무엇입니까? – LittleBobbyTables
왜이 Q에 대한 모든 downvotes? – Darren
모든'@PORT_NUMBER [nvarchar],'매개 변수는 멋지고 정확하게 ** 1 문자 ** 길어질 것입니다.'(N) VARCHAR'을 사용할 때 항상 ** ** ** 길이 * * 매개 변수! –