Welcome To DB STUDY
ORACLE
오라클 SQL 30일 학습
동적 SQL (Dynamic SQL)
-- 조건에 따라 다른 쿼리 실행 (MySQL 저장 프로시저 예제)
DELIMITER //
CREATE PROCEDURE get_employee_data(IN dept_id INT, IN min_salary DECIMAL)
BEGIN
SET @sql = CONCAT('SELECT * FROM employees WHERE department_id = ', dept_id);
IF min_salary IS NOT NULL THEN
SET @sql = CONCAT(@sql, ' AND salary >= ', min_salary);
END IF;
SET @sql = CONCAT(@sql, ' ORDER BY last_name;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
-- 프로시저 호출
CALL get_employee_data(5, 50000);
- 설명**:
- 런타임에 SQL 문을 동적으로 생성하고 실행 - 조건에 따라 다른 컬럼, 테이블, 조건을 사용할 때 필요 - SQL 인젝션 공격 방지를 위해 반드시 입력 값 검증 필요