7
입력 변수를 기반으로 MySQL 저장 프로 시저 내에서 쿼리 문자열을 변경하는 것이 목표입니다. 이런Mysql은 로직을 기반으로 저장 프로 시저에서 쿼리 문자열을 동적으로 작성합니다.
예시 :
CREATE DEFINER=`root`@`localhost` PROCEDURE `func`(type VARCHAR(15))
BEGIN
SET @type = type;
-- Check for the sort parameter
if @type="asc" THEN
SET @sort = " order by name asc";
elseif @type="desc" THEN
SET @sort = " order by name desc";
else
SET @sort ="";
end if;
SELECT id, name from table @sort;
END
용액 실행 사용하고, CONCAT : 은 DEFINER ='root'을 만들 @ 'localhost' PROCEDURE'test' (입력 VARCHAR (15)) BEGIN SET @input = input; if @ input = "asc"then SET @sort = "ActivityLogKey 오름차순 정렬"; elseif @input = "desc"then SET @sort = "순서대로 ActivityLogKey 내림차순"; else SET @sort = ""; end if; SET @query = CONCAT ('select * from activitylog', @ sort, 'limit 0, 5'); PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; end –
이것이 해결책이 아닌 이유를 답으로 추가하고 동의하거나 질문을 편집 한 이유입니다. –
100 평판이 없으면 내 질문에 대답하기 위해 8 시간을 기다려야합니다. –