• 검색 결과가 없습니다.

물리적 데이타베이스 수정 : 인덱스를 추가하거나 제거

스키마 변경 : 테이블 생성이나 제거

DDL 문장 실행이 성공이면, 0을 반환

실행이 오류일 경우, 예외사항이 발생시킴

다른 SQL 문장의 실행

 execute 메소드

SQL 문장의 실행의 결과로 테이블을 얻을지, SQL 문장에 의해 변경된 행의 수를 얻을지 모를 때에 사용

SQL 문장이 여러 값들을 반환하도록 허용

반환된 각 값들은 ResultSet이거나 행의 개수

execute 메소드 사용 예

boolean isResultSet; //반환 결과가 ResultSet이면 참 resultSet result; // 현재 ResultSet

ResultSetMetaData rmd;

int rowcount; // 현재 행 수

isResultSet = stmt.execute(sqlStatement);

if(isResultSet) { // ResultSet이 반환

result = stmt.getResultSet(); //Result Set을 처리하는 코드를 삽입 rmd = result.getMetaData();

while(result.next( ))

{ for(int i=1;i <= rmd.getColumnCount( ); i++) //TP 22page 예제 참조

…….

}

else { //ResultSet이 아닌 경우

rowcount = stmt.getUpdateCount();

}

Prepared Statement

 PreparedStatement 인터페이스

인자를 가질 수 있도록 구성된 SQL 문장을 미리 컴파일하여 데이타베이스 기능을 사용

인자 값들은 서로 다르면서 여러 번 수행되는 SQL 문장 구성에 용이

 예) 학생들에 대한 성적 입력을 위한 갱신 질의

PreparedStatement pstmt = con.prepareStatement(

“update grades set points=? where id=? and assignmentId=?”);

pstmt.setInt(1, 75); //첫 번째 인자는 점수에 대한 숫자 pstmt.setInt(2, 12345); //두 번째 인자는 학생 ID

pstmt.setInt(3, 1); //세 번째 인자는 반 ID

rowcount = pstmt.executeUpdate(); //실제 갱신이 수행되며, 갱신

이 적용된 행의 개수가 반환됨.

데이터베이스 저장 프로시저

 저장 프로시저(stored procedure)

데이타베이스 서버의 DBMS에 저장된 프로그램 모듈

함수들이나 프로시저들

데이타베이스에 지속적으로 저장됨

범용 프로그래밍 언어나 SQL 문장을 이용하여 저장 프로시저를 작성

 함수 선언 형식 예)

CREATE FUNCTION <함수 이름>(<매개 변수>) RETURN <리턴 타입>

<지역적인 선언>

<함수 몸체>;

 호출 형식 예)

CALL <프로시저나 함수 이름>(<매개 변수 목록>)

저장 프로시저가 유용한 경우

 어떤 데이타베이스 프로그램을 여러 응용에서 필요로 할 경우

중복된 노력을 줄일 수 있고, 소프트웨어의 모듈성을 높임

 어떤 환경에서 클라이언트와 서버 사이에 데이터 전송과 통신 비용을 줄이기 위해

 복잡한 타입의 유도된 데이터를 데이타베이스 사용자가 이용할 수 있도록 하기 위해

예) 그림이나 기하학적 객체 같은 데이터 타입

JDBC에서 저장 프로시저 사용

 CallableStatement 인터페이스를 이용

 예) SHOW_SUPPLIERS 저장 프로시저의 호출

create procedure SHOW_SUPPLIERS as

select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME from SUPPLIERS, COFFEES

where SUPPLIERS.SUP_ID = COFFEES.SUP_ID order by SUP_NAME

CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");

ResultSet rs = cs.executeQuery()

SQL/PSM(SQL/Persistent Stored Modules)

 지속적 저장 모듈을 작성할 수 있도록 허용하는 SQL 표준 의 한 부분

 함수와 프로시저를 생성하는 문장

 저장 프로시저와 함수의 코드를 작성하는데 사용할 수 있

는 일반적인 목적의 프로그램 구조도 포함

SQL/PSM 에서 함수 선언 예

예) 특정 영화에 속한 비디오의 수를 기반으로 {‘HUGE’, ‘LARGE’,

‘SMALL’) 중의 한 값을 리턴

함수 호출 방법

CREATE FUNCTION Video_size(IN movie_id String) RETURNS VARCHAR [7]

DECLARE No_of_videos INTEGER;

SELECT COUNT(*) INTO No_of_videos

FROM VideoTape WHERE movieId=movie_id;

IF No_of_videos > 10 THEN RETURN “HUGE”

ELSEIF No_of_videos > 5 THEN RETURN “LARGE”

ELSE RETURN “SAMLL”

END IF;

CALL Video_size (‘101’);

관련 문서