2009-11-27 2 views
76

SQL Server 2008에 저장된 procs를 작성하고 있으며 선택적 입력 매개 변수의 개념이 여기에 가능한지 궁금하십니까?SQL Server의 선택적 매개 변수는 proc를 저장합니까?

나는 항상 내가 사용하는 저장된 프로 시저에서 값을 확인하고 거기에서 물건을 가지고 싶지 않아 매개 변수에 NULL에 전달할 수 생각하지만, 개념은 여기에 사용할 수있는 경우 내가 관심이 있었다. 감사!

+1

같이 선언 할 수 타고 긴 ERLAND의 사이트에서 읽기, 그는 동적 검색 조건에 대한 몇 가지 좋은 정보를 가지고 : 당신 http://www.sommarskog.se/dyn-search.html –

답변

140

당신이

CREATE PROCEDURE MyProcName 
    @Parameter1 INT = 1, 
    @Parameter2 VARCHAR (100) = 'StringValue', 
    @Parameter3 VARCHAR (100) = NULL 
AS 

/* check for the NULL/default value (indicating nothing was passed */ 
if (@Parameter3 IS NULL) 
BEGIN 
    /* whatever code you desire for a missing parameter*/ 
    INSERT INTO ........ 
END 

/* and use it in the query as so*/ 
SELECT * 
FROM Table 
WHERE Column = @Parameter 
+0

답장을 보내 주셔서 감사합니다. – larryq

+0

매개 변수가 uniqueidentifier 유형이면 무엇입니까? 전의. @userId uniqueidentifier –

+1

궁금한 분들을 위해 @RKSharma에 답하십시오. 그것은 uniqueidentifiers와 똑같이 작동합니다. – rinukkusu

41

예, 그렇습니다. 그래서 같이 매개 변수를 선언 :

@Sort varchar(50) = NULL 

지금 당신도의 매개 변수를 전달하지 않아도 그것은 (당신이 기본값으로 무엇을 선택 또는) NULL로 설정됩니다..

+0

을 '= NULL'도 필요 없습니다. –

+3

정말로 필요하지 않습니까? –

+32

OMG Ponies에서 = 를 포함하지 않으면 매개 변수가 필요합니다. NULL로 전달할 수 있지만 그 논리를 프로 시저를 사용하는 응용 프로그램으로 이동하면됩니다. –