난 I은 SQLSERVERcoalesce
함수를 사용 업데이트 만 변경된 값
CREATE PROCEDURE update_only_changed
@FName varchar(50) = NULL,
@LName varchar(50) = NULL,
@CUST_DB VARCHAR(20)
AS
BEGIN
DECLARE @QUERY VARCHAR(255)
SET @QUERY = 'UPDATE ' + @CUST_DB + '..people SET LastName = COALESCE(@LName, LastName) WHERE id = 1'
EXEC (@QUERY)
END
GO
일부 고려
는 데이터베이스의 이름은
그래서, 때 프로 시저의 매개 변수로 전달되는 동적 SQL
인가 나는 두 가지 상황이 SQL을 실행합니다 :
내가 그 작업에 이용할 수있는 방법을EXEC(@ QUERY)
:I get the error saying: Must declare the scalar variable "@ LName". it does not interpret the variable that the command coalesce
EXEC @QUERY (without parentheses)
I get the error saying: The database 'UPDATE CUSTOMER' does not exist. Make sure the name is spelled correctly.
? 정적 업데이트 문을 사용하여 프로 시저를 실행하는 경우
은 EXEC없이, 그것은
UPDATE CUSTOMER..people SET LastName = COALESCE(@LName, LastName) WHERE id = 1
Ricardo,이 업데이트는 항상 실행시 행을 업데이트하겠습니까? @LName이 LastName의 현재 값과 다른 경우에만 수행되도록 업데이트하려면 생성 된 쿼리에 조건을 추가해야합니다. –
@Kuba Wyrostek 함수에 'coalesce'라는 변수가 있습니다. 조건을 만들지 않습니다. –
아니요, 그렇지 않습니다. LastName 열을 @LName 값 또는 LastName 열의 현재 값으로 업데이트하지만 항상 업데이트 **합니다. –