2014-07-23 6 views
0

3 개의 매개 변수를받는 MySQL을 호출하는 저장 프로 시저가 있습니다. 그 중 하나는 null 일 수 있습니다. 이제, 그들이 null 인 경우, 열린 쿼리 (Where 문없이)를 실행해야하며, 그렇지 않은 경우, 수신 한 값으로 제약 조건을 적용해야합니다. 나는 당신에게 여기 내 코드 제공,쿼리를 저장 프로 시저에 편집

DELIMITER ;; 
CREATE PROCEDURE `getPeople`(
IN p_startDate DATE, 
IN p_endDate DATE, 
IN p_name TEXT 
) 
BEGIN 
    SELECT * FROM people; 
    -- if p_startDate is not null, 'append' to the query "WHERE birthdate >= p_startDate" 
    -- if p_endDate is not null, 'append' to the query "WHERE birthdate <= p_endDate" 
    -- if p_name is not null, 'append' to the query "WHERE name = p_name" 
END;; 
DELIMITER ; 

내 첫 번째 방법은 3 개 가지 다른 쿼리를 작성한다)를,하지만 난 예를 (혼합 할 수 없습니다 : p_startDate 및 p_endDate 널 난 그냥 한 쿼리를 실행하지) . 나 좀 불을 붙일 수 있니?

감사합니다.

SQL Syntax for Prepared Statements

:

답변

0

나는 준비된 명령문이 (당신이 SQL 서버에서이를 동적 SQL을 사용할 수 있습니다)

여기를 보라 MySQL은 이것에 대해 갈 수있는 방법이 될 것이라고 생각 하나의 변수에 where 절이없는 main 문을 넣은 다음 원하는 where 절을 해당 문자열에 추가 한 다음 쿼리를 준비하고 실행하십시오.

위의 페이지는 귀하가 필요에 맞게 조정할 수있는 몇 가지 예를 보여줍니다.

+0

완료되었습니다. SET 및 CONCAT을 사용하면 내 위치 제한을 추가 할 수 있습니다. – jdlcgarcia

관련 문제