728x90
안녕하세요. 오늘은 라이프사이클 재무에 대한 모든 것_글라이드 유튜브 강의를 듣고 참고하여 MSSQL의 동작 SQL에 대해 포스팅을 작성하도록 하겠습니다.
동적 SQL이란?
SQL 쿼리를 문자열로 생성한 후, 그 문자열을 실행하는 방법입니다. 일반적인 SQL 쿼리와 달리, 동적 SQL은 실행 시점에 쿼리 문이 구성되므로 더 유연하게 다양한 상황에 대응할 수 있습니다.
-- 일반적인 SQL 쿼리
SELECT * FROM COMPANYINFO;
-- 동적 SQL 쿼리
EXEC('SELECT * FROM COMPANYINFO');
동적 SQL 사용 시 주의점
1. SQL 인젝션 방지 : 동적 SQL은 사용자가 입력한 값을 직접 쿼리에 포함하기 때문에 SQL 인젝션 공격에 취약할 수 있음. 이를 방지하기 위해 항상 입력값을 검증하고 필요한 경우 파라미터화된 쿼리를 사용해야함
※ SQL 인젝션이란? 공격자가 사용자 입력값을 조작하여 의도하지 않은 SQL 쿼리를 실행하게 만드는 해킹 기법
2. 성능 고려 : 동적 SQL은 실행 시점에 쿼리가 해석되므로, 복잡한 쿼리를 자주 생성하고 실행할 경우 성능에 영향을 줄 수 있음. 필요한 경우 캐싱이나 최적화를 고려해야함
동적 SQL 활용
동적 SQL은 다양한 상황에서 활용될 수 있지만, 특히 매개변수로 테이블명을 받아 그 테이블의 데이터를 출력하고자 할 때 유용함
동적 SQL을 활용한 프로시저 작성
-- 테이블의 이름을 매개변수로 받아 해당 테이블의 데이터를 출력해주는 프로시저 작성
CREATE PROC SP_SELECT_TABLE_INFO @TableName VARCHAR(3000)
AS
BEGIN
DECLARE @sqlQuery VARCHAR(3000)
SET @sqlQuery = 'SELECT * FROM ' + @TableName
EXEC(@sqlQuery)
END
GO
-- 프로시저 실행
EXEC SP_SELECT_TABLE_INFO 'Stockprice';
EXEC SP_SELECT_TABLE_INFO 'Companyinfo';
- @TableName : 프로시저가 입력받는 매개변수로, 조회하고자 하는 테이블의 이름을 지정
- @sqlQuery : 동적으로 생성된 SQL 쿼리를 저장하는 변수
- SET @sqlQuery : 테이블명을 포함한 SELECT 쿼리를 문자열로 생성
- EXEC(@sqlQuery) : 생성된 SQL 쿼리를 실행
728x90
'Databases > MSSQL' 카테고리의 다른 글
[MSSQL] 조건문(IF)과 반복문(WHILE) (+continue, break) (0) | 2024.08.20 |
---|---|
[MSSQL] 저장 프로시저(Stored Procedure) (0) | 2024.08.20 |
[MSSQL] 필수 함수 총정리 (ft. 집계, 문자열, 날짜, 형식 변환, 출력) (0) | 2024.08.20 |
[MSSQL] 필수 데이터 타입 총정리 (0) | 2024.08.20 |
[MSSQL] 사용자 정의 함수 (ft. 스칼라 함수, 테이블 함수) (0) | 2024.08.20 |