PL/SQL - 변수들: 초보자 가이드

안녕하세요, 미래의 PL/SQL 마법사 여러분! 오늘 우리는 PL/SQL 변수의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 나는 당신의 친절한 안내자가 되겠습니다. 우리는 단계별로 진행하겠습니다. 이 튜토리얼이 끝나면, 당신은 프로처럼 변수를 다루게 될 것입니다!

PL/SQL - Variables

변수는 무엇인가요?

먼저, 변수에 대해 이해해 보겠습니다. 변수는 컴퓨터의 메모리 속에 데이터를 저장하는 작은 컨테이너라고 생각해 보세요. 방에 다양한 상자를 사용하여 다양한 종류의 물건을 보관하는 것처럼, 우리는 프로그램에서 다양한 종류의 데이터를 저장하기 위해 변수를 사용합니다.

PL/SQL에서 변수 선언

PL/SQL에서 변수 선언은 새로운 사람에게 자신을 소개하는 것과 같습니다. 프로그램에게 "안녕, 나 여기 있어. 나는 이거를 저장할 수 있어!"라고 말하는 것입니다.

기본 문법

PL/SQL에서 변수를 선언하는 기본 문법은 다음과 같습니다:

variable_name datatype;

이를 구체적으로 설명하자면:

  • variable_name은 당신이 선택한 변수의 이름입니다.
  • datatype은 변수가 저장할 수 있는 데이터 유형입니다.

예제

DECLARE
my_name VARCHAR2(50);
my_age NUMBER;
is_student BOOLEAN;
BEGIN
-- 여기에 코드를 작성하세요
END;

이 예제에서:

  • my_name은 최대 50자의 문자열을 저장할 수 있습니다.
  • my_age는 숫자를 저장할 수 있습니다.
  • is_student는 참 또는 거짓을 저장할 수 있습니다.

PL/SQL에서는 변수를 DECLARE 섹션에서 BEGIN 문 전에 선언합니다.

일반 데이터 유형

다음은 만나게 될 일반 데이터 유형의 표입니다:

데이터 유형 설명 예제
VARCHAR2 가변 길이 문자열 'Hello, World!'
NUMBER 수치 값 42, 3.14
DATE 날짜와 시간 값 '01-JAN-2023'
BOOLEAN 논리 값 (참/거짓) TRUE

PL/SQL에서 변수 초기화

이제 우리가 변수를 선언했으므로, 그들에게 값을 부여해 보겠습니다. 이 과정을 초기화라고 합니다.

기본 초기화

변수를 선언할 때 바로 초기화할 수 있습니다:

DECLARE
greeting VARCHAR2(20) := 'Hello, PL/SQL!';
lucky_number NUMBER := 7;
BEGIN
DBMS_OUTPUT.PUT_LINE(greeting);
DBMS_OUTPUT.PUT_LINE('My lucky number is: ' || lucky_number);
END;

이 예제에서 우리는 "Hello"를 PL/SQL에게 말하고 우리의 행운의 숫자를 공유하고 있습니다. :=는 PL/SQL의 할당 연산자입니다.

NULL로 초기화

occasionally, you might want to declare a variable but not assign it a value yet. In that case, you can use NULL:

DECLARE
user_input VARCHAR2(100) := NULL;
BEGIN
-- We'll get the user input later
END;

PL/SQL에서 변수 범위

변수 범위는 변수의 이웃과 같습니다 - 그것은 변수가 어디서 볼 수 있고 사용할 수 있는지 정의합니다.

지역 변수

블록 내에서 선언된 변수는 해당 블록에 지역적입니다. 그들은 블록 밖에서 볼 수 없습니다.

DECLARE
outer_variable VARCHAR2(20) := 'I''m outside!';
BEGIN
DBMS_OUTPUT.PUT_LINE(outer_variable);

DECLARE
inner_variable VARCHAR2(20) := 'I''m inside!';
BEGIN
DBMS_OUTPUT.PUT_LINE(outer_variable);  -- This works
DBMS_OUTPUT.PUT_LINE(inner_variable);  -- This also works
END;

DBMS_OUTPUT.PUT_LINE(outer_variable);  -- This works
-- DBMS_OUTPUT.PUT_LINE(inner_variable);  -- This would cause an error
END;

이 예제에서 inner_variable은 겉 블록에서 볼 수 없는 내 블록에서만 나타나는 수줍은 친구입니다. 겉 블록은 그를 볼 수 없습니다!

전역 변수

프로그램 전체에서 볼 수 있는 변수를 원하신다면, 가장 바깥 블록에서 선언하세요.

DECLARE
global_var NUMBER := 100;

PROCEDURE print_global IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Global variable value: ' || global_var);
END;

BEGIN
print_global;
global_var := global_var + 50;
print_global;
END;

여기서 global_var는 인기 있는 아이처럼 모두가 알고 상호작용할 수 있습니다!

SQL 쿼리 결과를 PL/SQL 변수에 할당

PL/SQL의 가장 멋진 기능 중 하나는 SQL과의 원활한 통합입니다. SQL 쿼리를 사용하여 PL/SQL 변수에 값을 할당할 수 있습니다!

단일 행 쿼리

DECLARE
employee_name VARCHAR2(100);
employee_salary NUMBER;
BEGIN
SELECT first_name || ' ' || last_name, salary
INTO employee_name, employee_salary
FROM employees
WHERE employee_id = 100;

DBMS_OUTPUT.PUT_LINE('Employee: ' || employee_name);
DBMS_OUTPUT.PUT_LINE('Salary: $' || employee_salary);
END;

이 예제에서 우리는 employees 테이블에서 직원의 이름과 급여를 가져와서 PL/SQL 변수에 저장합니다.

다중 행 쿼리

다중 행을 처리하려면 커서나 bulk collect를 사용해야 합니다. bulk collect를 사용한 예제는 다음과 같습니다:

DECLARE
TYPE name_table_type IS TABLE OF VARCHAR2(100);
employee_names name_table_type;
BEGIN
SELECT first_name || ' ' || last_name
BULK COLLECT INTO employee_names
FROM employees
WHERE department_id = 60;

FOR i IN 1..employee_names.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Employee ' || i || ': ' || employee_names(i));
END LOOP;
END;

이 스크립트는 부서 60의 모든 직원 이름을 가져와서 PL/SQL 테이블에 저장하고, 그 테이블을 순회하면서 각 이름을 출력합니다.

그렇게 하면, 우리는 PL/SQL 변수의 기본을 다루는 방법, 선언에서 초기화, 범위, 그리고 SQL 쿼리 결과를 변수에 할당하는 방법을 다루었습니다. 연습이 완벽을 만드는 것을 기억하세요, 그러니 이 개념들을 실험해 보지 마세요!

마지막으로, 작은 프로그래머의 유머를 드리겠습니다: 프로그래머가 일을 그만두는 이유는 어레이(raise)를 받지 못했기 때문입니다! ?

행복하게 코딩하세요, 그리고 당신의 변수들이 항상 잘 행동하길 바랍니다!

Credits: Image by storyset