0

선택적 인수가있는 저장 프로 시저가 필요합니다. 기본값은 내가 COALESCEMsSql 서버 : 저장 프로 시저의 기본 bigint 인수

COALESCE(@itemID, table.itemID) = table.itemID 

에서 사용하고자하는 그런

CREATE PROCEDURE [myStoredProcedure](@itemID bigint = NULL) 

null의 경우이 방법은 선택적 인수를 사용 맞습니까? Oracle에서도 동일한 방식으로 작동합니까? 당신이 COALESCE()을 사용할 수 있지만

+1

성능면에서 논리적 구분을하는 것이 좋습니다. 예를 들어 IF (@itemID IS NULL) BEGIN 문 1 END ELSE BEGIN 문 2 END –

+0

자세한 내용은 [T-SQL의 동적 검색 조건] (http://www.sommarskog.se/dyn-search-2008)을 참조하십시오. html). [이전의 답변에서] (https://stackoverflow.com/a/18697104/1048425) 나는 Dmitrij가 'IF/EKSE'를 사용하는 것에 대해 자세히 설명하는 예제를 수행했습니다. – GarethD

답변

2

, 내가 명시 적 비교가 더 일반적인 생각 : 모두 표준 SQL 때문에

where (t.itemId = @itemId or @itemId is null) 

하나의 방법은 SQL Server 또는 오라클에서 작동합니다. Oracle에서는 매개 변수가 @으로 시작하지 않으며 저장 프로 시저의 구문이 매우 다르게 보일 수 있습니다.