입력을 기반으로 레코드를 반환하는 저장 프로 시저를 만들려고합니다. 모든 입력 매개 변수가 null 인 경우에, 다른 기록 매개 변수를 사용하고 반환, 전체 테이블을 반환 :이 절차를 만드는 것은 "문맥에 지정된 부울이 아닌 유형의 표현 동안SQL에서 null/not null 매개 변수를 기반으로 where 절을 빌드
create procedure getRecords @parm1 varchar(10) = null, @parm2 varchar(10) = null, @parm3 varchar(10) = null
as
declare @whereClause varchar(500)
set @whereClause = ' where 1 = 1 '
if (@parm1 is null and @parm2 is null and @parm3 is null)
select * from dummyTable
else
begin
if (@parm1 is not null)
set @whereClause += 'and parm1 = ' + '' + @parm1 + ''
if (@parm2 is not null)
set @whereClause += 'and parm2 = ' + '' + @parm2 + ''
if (@parm3 is not null)
set @whereClause += 'and parm3 = ' + '' + @parm3 + ''
select * from dummyTable @whereClause <-- Error
end
오류를 어디 조건 "
제 접근법이 where 절을 작성하는 데 잘못 되었다면 의견을주십시오.
감사
왜 당신이 기대'dummyTable SELECT * FROM '1 = 1''쿼리로 모두 동일한에있을를'dummyTable SELECT * FROM WHERE 1 = 1'? 하나는 문자열을 마지막에 무엇을하고 앉아 있었나요? 'SELECT'* FROM dummyTable '이'SELECT 'Hello World''와 다르게 처리 할 것으로 기대하십니까? – MatBailie
엔진을 지정하십시오. – Sebas