PL/SQL : 데이터베이스 중심 작업에 최적화, SQL 문을 절차적처리
Java : 범용 프로그래밍에 적합, 객체지향언어
1. 변수 선언
PL/SQL
- DECLARE 섹션 또는 BEGIN 블록 안에서 변수선언
- 데이터베이스 중심의 데이터 타입(VARCHAR2, NUMBER, DATE)을 사용
DECLARE
v_name VARCHAR2(50); -- 문자열 변수
v_age NUMBER(3); -- 숫자 변수
v_date DATE; -- 날짜 변수
BEGIN
v_name := 'Alice';
v_age := 25;
v_date := SYSDATE;
END;
Java
- 변수를 클래스 또는 메서드 안에서 선언
- Java 언어 데이터 타입(int, double, String, boolean)을 사용
public class Main {
public static void main(String[] args) {
String name = "Alice"; // 문자열 변수
int age = 25; // 정수 변수
double salary = 5000.50; // 실수 변수
}
}
2. 데이터 타입
- 주로 데이터베이스 중심의 데이터 타입 사용
- 문자열: VARCHAR2, CHAR, CLOB
- 숫자: NUMBER, INTEGER
- 날짜: DATE, TIMESTAMP
- 참/거짓: BOOLEAN (PL/SQL 전용)
DECLARE
v_flag BOOLEAN := TRUE;
v_price NUMBER(8,2);
BEGIN
IF v_flag THEN
v_price := 19.99;
END IF;
END;
- 원시 데이터 타입(Primitive types)과 참조 데이터 타입(Reference types)을 제공
- 문자열: String
- 숫자: int, float, double
- 날짜: LocalDate, Date
- 참/거짓: boolean
boolean flag = true;
double price = 19.99;
3. 변수 초기화
PL/SQL
- 변수를 선언 시 초기화하거나 나중에 값을 할당할 수 있음
- 초기값 없이 선언하면 NULL로 초기화됨
DECLARE
v_number NUMBER := 10; -- 초기화
v_string VARCHAR2(50); -- 초기화 없이 선언 (NULL)
BEGIN
v_string := 'Hello';
END;
Java
- 지역 변수(Local variables)는 반드시 초기화해야 사용할 수 있음
- 클래스 멤버 변수는 초기화하지 않으면 기본값(숫자는 0, 참조 타입은 null)으로 설정
public class Main {
static int classVar; // 기본값 0
public static void main(String[] args) {
int localVar; // 초기화 필요
localVar = 10;
System.out.println(localVar);
}
}
4. 변수 스코프(Scope)
PL/SQL
- 변수는 선언된 블록 내에서만 유효
- 블록 안에서 선언된 변수는 외부에서 접근할 수 없음
DECLARE
v_outer NUMBER := 10;
BEGIN
DECLARE
v_inner NUMBER := 20;
BEGIN
-- v_inner와 v_outer 사용 가능
DBMS_OUTPUT.PUT_LINE(v_outer + v_inner);
END;
-- v_inner는 이 블록에서 사용 불가
END;
Java
- 클래스 멤버 변수(전역 변수), 메서드 변수(지역 변수), 매개 변수의 스코프가 구분됨
- 블록 {} 안에서 선언된 변수는 블록 밖에서 접근할 수 없음
public class Main {
static int globalVar = 10; // 클래스 멤버 변수
public static void main(String[] args) {
int localVar = 20; // 메서드 변수
{
int innerVar = 30; // 블록 변수
System.out.println(localVar + innerVar);
}
// innerVar는 여기서 접근 불가
}
}
5. 상수(Constant)
PL/SQL
- CONSTANT 키워드를 사용하여 상수를 선언
- 상수는 초기화 후 변경할 수 없음
DECLARE
v_pi CONSTANT NUMBER := 3.14159;
BEGIN
-- v_pi := 3.2; -- 오류 발생
END;
Java
- final 키워드를 사용하여 상수를 선언
- 선언과 동시에 초기화해야 하며 값 변경이 불가능
public class Main {
public static final double PI = 3.14159;
public static void main(String[] args) {
// PI = 3.2; // 오류 발생
}
}
6. 참조(Reference)
PL/SQL
- PL/SQL은 데이터베이스 컬럼과 변수를 연관시킬수 있음
- %TYPE 또는 %ROWTYPE 키워드를 사용
DECLARE
v_name employees.name%TYPE;
BEGIN
SELECT name INTO v_name FROM employees WHERE id = 1;
END;
Java
- Java에서는 객체의 참조 변수와 원시 타입 변수를 구분
String name = "Alice"; // 참조 변수
int id = 1; // 원시 타입 변수
7. 요약
| PL/SQL | Java |
---|
데이터타입 | 데이터베이스 중심(VARCHAR2, NUMBER, 등) | 언어 중심(int, String, boolean) |
초기화 | 초기화 없이 선언 가능 (기본값: NULL) | 초기화 필수 (지역 변수) |
스코프 | 블록 기반 | 클래스/메서드/블록 기반 |
상수 | CONSTANT 키워드 사용 | 키워드 사용 |
참조 | %TYPE, %ROWTYPE 키워드 제공 | 참조 및 원시 타입 구분 |