2017-04-21 8 views
2

사용자가 SQL 저장 프로 시저 값의 저장 프로 시저 값을 전달할 수도 있고 전달하지 않을 수도 있습니다.저장 프로 시저 매개 변수를 설정하는 방법은 사용자가 값을 전달하거나 전달하지 않을 수 있습니까?

그래서 StoredProcedure에서 내 변수를 선언하고 Where 절에서 정의하는 방법은 무엇입니까?

CREATE PROC spGetRecord 
@Storeid nchar(10)=null 
AS 
BEGIN 
    SELECT ID,NAME 
    FROM table1 
    WHERE [email protected] //@Storeid is may pass the value by user or may not 
END 

그래서 어떻게에서 @Storeid을 정의해야합니다 Where 절

감사

답변

2

당신이 검색 절차의 일종을 구축하는 추측입니다 ...

간단한 시작으로 매개 변수가 Storeid과 일치하는지 확인하십시오. 그는 매개 변수는 null입니다 :

:

고급 포괄 검색 쿼리의
create proc spGetRecord (@Storeid nchar(10)=null) as 
begin 
    set nocount, xact_abort on; 

    select id,name 
    from table1 
    where ([email protected] or @Storeid is null) 
end; 

은 다음을 참조하십시오

+0

이 줄에 대한 설명을 줄 수 있습니까?'set nocount, xact_abort on;'? –

+2

@mohamedfaiz 가장 좋은 설명은 다음과 같습니다. [항상 xact_abort, nocount on;을 포함시켜야하는 이유 - Erland Sommarskog] (http://www.sommarskog.se/error_handling/Part1.html#jumpXACT_ABORT). 그것은 여러 가지 이유로 당신의 절차에 그것을 포함시키는 것이 좋습니다 (imho 모범 사례). 물론,'select' 연산에'xact_abort'가 필요 없을 지 모르지만, 상처를주지는 않습니다. 'nocount'는 (영향을받는 1 행)과 같은 메시지를 억제합니다 ... 증가 된 네트워크 트래픽 때문에 응용 프로그램의 성능을 저하시킵니다. " – SqlZim