이것이 가능한지 확실하지 않지만 어쨌든 묻습니다.업데이트를 수행 할 때 매개 변수를 원래 값으로 유지하는 방법
테이블에서 업데이트를 수행하는 저장 프로 시저가 있습니다. 이 저장 프로 시저에는 5 개의 매개 변수가 있습니다.
@ClawbackID int,
@PaymentID int,
@ClawbackDate date,
@ClawbackPercent money,
@ClawbackAmount money
따라서 사용자가 프로 시저를 실행하면 5 개의 매개 변수 값을 채워야합니다.
이제이 경우에 매개 변수 중 2 개만 업데이트하려고합니다. 변경하지 않으려는 3 개의 매개 변수에 대해 동일한 값을 입력해야한다는 것을 의미합니다. 2 개의 매개 변수를 변경하고 싶습니다. 이것은 인간의 실수 가능성을 더 높일 수 있습니다.
매개 변수가 변경되지 않도록 매개 변수 이름과 매개 변수 이름을 유지할 수있는 방법이 있는지 궁금합니다. 값을 입력하고 싶습니다. I는 5 개 2 파라미터 변경 곳 아래
예는 다음
exec procexample @ClawbackID, @PaymentID, '2017-03-06', @ClawbackPercent, 1540.00
그래서 세 PARAMS 그들의 원래의 값을 유지하고 입력 된 두 값이 변경된다. 내가 4 개 값을 업데이트 할 수 있습니다
그러나 이것은 또 다른 기회에 동적 될 필요가있을 것이다, 다음 기회가 될 수에만 1 개 값 등
이 가능합니까?
UPDATE t SET
t.ClawbackDate=COALESCE(@ClawbackDate, t.ClawbackDate)
FROM UpdatableTable t
WHERE <criteria>
당신은 최적화 할 수 있습니다
당신이 변화를 유발하지 않는 매개 변수의 값으로 NULL
을 통과 한 다음 저장 프로 시저 내부 로직을 사용
NULL을 값 대신 자리 표시 자로 전달하면 NULL을 실제로 값으로 사용하려는 사용자를 어떻게 처리하겠습니까? 이것은 저장 프로 시저이므로 이것이 어떻게 할 것인가가 아닙니다. 필자는 매개 변수를 선택적으로 만들 것입니다. –
어떻게 작동합니까? "매개 변수 값 NULL"과 "매개 변수 생략"을 구별 할 수있는 방법이 있습니까? 업데이트 할 열이 nullable이고 NULL이 설정해야하는 값인 경우 각 열 쌍의 매개 변수로 작업합니다. 하나는 nullable 값이고 다른 하나는 무시하기 위해 0을 전달하고 1은 업데이트를 전달합니다. – dlatikay
오 OP가 전달하려고하는 것이 무엇인지 알 것 같아요 .... 그들은 실제로 그들이하려고하는 것을 설명하는 좋은 일을하지 않았습니다. 당신이 설명하는 것이 실제로 그들이 원하는 것일 수 있다고 생각합니다. –