1
나는라는 오류 얻을 @ID과 @Name를 전달하여 신용 카드 종류를 업데이트 실행하려고하면 :문제()
Msg 2786, Level 16, State 1, Procedure sp_SaveCreditCardType, Line 29
The data type of substitution parameter 1 does not match the expected type of the format specification.
문제는 코드 내 조각입니다 그이 문을 사용하여 CreditCardTypes 테이블의 ID의 존재에 대한 검사 :
-- make sure the ID is a valid number
IF NOT EXISTS (SELECT * FROM CreditCardTypes WHERE ID = @ID)
BEGIN
RAISERROR('The Credit Card ID ''%s'' does not exist. Update Failed.', 15, 1, @ID)
RETURN -100
END
사람이 나에게 오류를 제공 할 수있는 이유 어떤 생각을 가지고 있습니까? 이런 식으로 if exists()를 사용하는 많은 예제를 보았습니다. 그러나 어떤 이유로 그것이 저에게 오류를줍니다.
다음은 전체 proc입니다.
CREATE PROCEDURE dbo.sp_SaveCreditCardType
(
@ID int = null,
@Name varchar(50),
@Description varchar(150) = null
)
AS
DECLARE
@Err INT
BEGIN
SET NOCOUNT ON
-- check to make sure a Name was passed in
IF @Name IS NULL
BEGIN
RAISERROR('A Name was not specified. Execution aborted.', 15, 1, @Name)
RETURN -100
END
-- check to see if an ID is passed
IF @ID IS NOT NULL AND @ID <> 0
BEGIN
-- make sure the ID is a valid number
IF NOT EXISTS (SELECT * FROM CreditCardTypes WHERE ID = @ID)
BEGIN
RAISERROR('The Credit Card ID ''%s'' does not exist. Update Failed.', 15, 1, @ID)
RETURN -100
END
-- update an existing credit card type
UPDATE CreditCardTypes
SET Name = @Name,
[Description] = @Description
WHERE ID = @ID
SET @Err = @@ERROR
IF @Err <> 0 GOTO ErrorHandler
END
ELSE
BEGIN
-- first check to make sure the credit card type doesn't already exist
IF NOT EXISTS (SELECT * FROM CreditCardTypes WHERE Name = @Name)
BEGIN
-- insert a new credit card type
INSERT INTO CreditCardTypes (Name, [Description])
VALUES (@Name, @Description)
SET @Err = @@ERROR
IF @Err <> 0 GOTO ErrorHandler
END
ELSE
RAISERROR('The Credit Card Type ''%s'' already exists. Insert failed.', 15, 1, @Name)
RETURN -100
END
SET @Err = @@ERROR
IF @Err <> 0 GOTO ErrorHandler
RETURN 0
ErrorHandler:
RAISERROR('An error occured while saving the credit card type ''%s''', 16, 1, @Name) WITH LOG
RETURN -100
END
GO
오 마이 지옥! 당신은 도움을 주셔서 대단히 감사합니다. 그것은 정확히 문제였습니다. 수업은 배웠다. 고마워요! – Cory