본문 바로가기

Database/Theory

Database。삽입 SQL(Embedded SQL) - 다이나믹 SQL(Dynamic SQL)

728x90
반응형

특별히 일반 대화식 온라인 응용을 실행 시간(Runtime)에 구성할 수 있는 삽입 SQL

 

     1) 터미널로부터 명령문 접수

     2) 입력된 멸령문의 분석

     3) 데이터베이스에 대한 적절한 SQL 명령문 지시

     4) 터미널로 메세지나 결과 회송

 

실행 시간에 동적으로 작성하여 곧바로 실행 시키는 것

 

-- 호스트 변수
VARCHAR [dynamicSQL 변수명]; -- 문자 스트링 변수

[dynamicSQL 변수명] = "DELETE FROM [테이블명]
                        WHERE [조건]";

EXEC SQL PREPARE objSQL FROM :[dynamicSQL 변수명];
EXEC SQL EXECUTE objSQL;

objSQL : 호스트 프로그램 변수가 아니라 별도의 선언 없이 사용된 SQL 변수(SQL Variable)로서 dynamicSQL에 저장된 SQL문의 목적 코드를 저장하는데 사용

 

PREPARE문과 EXECUTE문을 하나의 IMMEDIATE문으로 표현

 

EXEC SQL EXECUTE IMMEDIATE :[dynamicSQL 변수명];

 

목적 코드로 변환시키는 PREPARE문에는 어떤 종류의 SQL문도 포함될 수 있음

 

스크링으로 표현되는 SQL문에는 호스트 변수를 포함시킬 수 없으나 물음표(?)로 표현하는 매개 변수는 포함 시킬 수 있음

 

VARCHAR [dynamicSQL 변수명];

[dynamicSQL 변수명] = "DELETE FROM [테이블명]
                        WHERE [필드1] = ?
                          AND [필드2] < ?";

EXEC SQL PREPARE objSQL FROM :[dynamicSQL 변수명];
     ...
     [필드1] = "대응값";
     [필드2] = 12;
-- ?에 대응하는 값들은 터미널로부터 입력 받을 수 있음
EXEC SQL EXECUTE objSQL USING :[필드1], :[필드2];

 

# 온라인 응용

온라인 터미널로 데이터베이스 접근을 지원하는 응용 프로그램

728x90
반응형