DB/MYSQL

동적 쿼리 작성하기

MAKGA 2021. 10. 15. 20:39
320x100

서버에서 SP를 호출하며 조건을 임의로 파라미터로 보내주려고 하던 와중에 필요한 것이 동적 쿼리였다.

예를 들면 character 테이블에서 class가 1,2,4인 것을 찾아야 하는 내용을 만들어야 하는데 1,2,4가 고정이 아니라 서버에서 임의로 변경이 가능한 조건이다.

그래서 sp내에 쿼리와 파라미터로 온 조건을 문자열로 합쳐 최종 쿼리를 완성하고 실행 시켜야 하는데 동적쿼리가 필요했다.

 

내용은 대략 다음과 같다.

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_name` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_name`(
	IN `_uid` BIGINT UNSIGNED
,	IN `_type` VARCHAR(255)
)
BEGIN
	SET @v_uid = _uid;
	SET @v_type = _type;

	SET @v_query = 'UPDATE
			a
		JOIN
			b
		ON
			a.idx = b.idx
		SET
			a.value = 0
		WHERE
			a.uid = ? AND
			FIND_IN_SET(b.type, ?)';

	PREPARE stmt FROM @v_query;
	EXECUTE stmt USING @v_uid, @v_type;
	DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

 

@v_condition은 sp의 파라미터로 대체될 내용이다. 조건과 기본 쿼리문을 작성해놓고 동적으로 prepare 시켜 실행하는 내용이다.

 

 

 

https://stackoverflow.com/questions/999200/is-it-possible-to-execute-a-string-in-mysql

 

Is it possible to execute a string in MySQL?

I have to convert a MSSQL stored proc that passes a varchar that is a query: INSERT INTO Results EXEC (@Expresion); This isn't working. I'm pretty sure that EXEC and EXECUTE aren't MySQL comman...

stackoverflow.com

https://minimonk.net/6728

 

mysql prepare + execute 와 query 차이점

php에서 PDO를 통해 prepare / execute / fetch를 통해 수행하는 것과 query / fetch를 하는게 있길래 찾아보니.. 얘는 엄밀하게 mysql의 지원기능이라고 해야 하려나? mysql> SET @s = 'SELECT SQRT(POW(?,2) + P..

minimonk.net

 

https://scidb.tistory.com/entry/%EA%B2%80%EC%83%89%EC%A1%B0%EA%B1%B4%EC%9D%84-%EB%8F%99%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%B0%94%EA%BE%B8%EC%96%B4%EC%95%BC-%ED%95%A0-%EB%95%8C

 

검색조건을 동적으로 바꾸어야 할 때

-동적인 조회조건에서 SQL 작성법 -다양한 검색조건에서 SQL 튜닝방법 -쿼리변환의 부정적 측면 해결 아래는 신입사원과 김대리의..

scidb.tistory.com

https://motolies.com/697

 

[MySQL & MariaDB] 동적 프로시저 dynamic procedure - 기간 포함

2014/04/10 - [프로그램 자료/MS-SQL] - [MS-SQL]동적조회 조건에서의 정적 프로시져와 동적프로시져 Dynamic Where 2018/07/27 - [프로그램 자료/MySQL & MariaDB] - [MySQL & MariaDB] 페이지네이션 / 페이징 처..

motolies.com

https://m.blog.naver.com/adolkristin/220723191724

 

MySQL 프로시저에서 동적 쿼리 사용

한 테이블에서 특정 column만 update 하는 쿼리가 여러 개 있을 때, 컬럼 명과 업데이트 할 값을 인자로 받...

blog.naver.com

 

320x100

'DB > MYSQL' 카테고리의 다른 글

모든 저장 프로시저내에서 텍스트 찾기  (0) 2021.10.25
쿼리 조건에 들어갈 내용을 파라미터로 전달하기  (0) 2021.10.18
Replication  (0) 2021.10.14
C API Asynchronous 함수 정리  (0) 2021.10.13
INSERT와 REPLACE 차이  (0) 2021.10.13