메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Dbstudy (토론 | 기여)님의 2025년 5월 30일 (금) 18:18 판 (새 문서: == 동적 SQL (Dynamic SQL) == <source lang=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;');...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

동적 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 인젝션 공격 방지를 위해 반드시 입력 값 검증 필요