PL/SQL - 절차: 초보자 가이드
안녕하세요, 미래의 PL/SQL 마법사 여러분! 오늘 우리는 PL/SQL 절차의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 나는 여러분의 친절한 안내자가 되겠습니다. 우리는 단계별로 이를 진행할 것입니다. 이 튜토리얼의 끝까지 가면, 당신은 프로처럼 자신의 절차를 만들 수 있을 것입니다!
PL/SQL 절차는 무엇인가요?
들어가기 전에 절차가 무엇인지 이해해 보겠습니다. 절차는 요리의 재사용 가능한 레시피라고 생각해 보세요. 당신이 좋아하는 초콜릿 칩 쿠키의 레시피를 반복적으로 사용하듯이, 절차는 특정 작업을 수행하기 위해 호출할 수 있는 SQL과 PL/SQL 문의 집합입니다.
PL/SQL 서브프로그램의 부분들
이제 PL/SQL 서브프로그램(절차를 포함)의 구조를 분해해 보겠습니다. 이는 샌드위치의 다양한 부분을 이해하는 것과 같습니다. 각 구성 요소는 자신의 역할을 가지고 있습니다!
- 선언 부분: 여기서 우리는 재료들을 소개합니다 (변수, 상수 등).
- 실행 부분: 여기서 마법이 일어납니다 - 우리의 실제 코드가 여기에 들어갑니다.
- 예외 처리 부분: 이는 우리의 안전망으로, 발생할 수 있는 모든 오류를 잡습니다.
이는 간단한 시각적 표현입니다:
DECLARE
-- 선언 부분
BEGIN
-- 실행 부분
EXCEPTION
-- 예외 처리 부분
END;
절차 생성하기
이제 우리는 손을 dirt하고 첫 번째 절차를 만들어 보겠습니다! 우리는 간단한 것으로 시작할 것입니다 - "Hello, World!"를 출력하는 절차입니다.
CREATE OR REPLACE PROCEDURE say_hello IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/
이를 분해해 보겠습니다:
-
CREATE OR REPLACE PROCEDURE
: 이는 Oracle에 새로운 절차를 생성하거나同名의 기존 절차를 교체하도록 합니다. -
say_hello
: 우리가 절차에 부여한 이름입니다. -
IS
: 이 키워드는 절차 헤더와 본문을 구분합니다. -
BEGIN
와END
: 이 키워드는 실행 부분을 감싸います. -
DBMS_OUTPUT.PUT_LINE
: 이는 텍스트를 출력하는 내장 절차입니다. -
/
: 이 슬래시는 전체CREATE PROCEDURE
문을 실행합니다.
독립형 절차 실행하기
훌륭합니다! 우리는 절차를 생성했습니다. 하지만 어떻게 실행할까요? 그것은 간단합니다:
BEGIN
say_hello;
END;
/
이를 실행하면 "Hello, World!"가 출력됩니다. 축하합니다! 당신은 첫 번째 PL/SQL 절차를 생성하고 실행했습니다!
독립형 절차 삭제하기
때로는 청소가 필요합니다. 절차를 제거하고 싶다면 이는 간단합니다:
DROP PROCEDURE say_hello;
이 명령은 우리의 say_hello
절차를 삭제합니다. 이 힘을 사용할 때 주의하세요 - 큰 힘에는 큰 책임이 따릅니다!
PL/SQL 서브프로그램의 파라미터 모드
이제 절차를 더 유연하게 만들기 위해 파라미터를 추가해 보겠습니다. PL/SQL에서 파라미터는 다양한 모드를 가질 수 있습니다:
모드 | 설명 |
---|---|
IN | 절차로 값 전달 |
OUT | 절차에서 값 반환 |
IN OUT | 값 전달 및 반환 |
IN 파라미터를 가진 절차를 생성해 보겠습니다:
CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/
이제 다양한 사용자를 인사할 수 있습니다:
BEGIN
greet_user('Alice');
greet_user('Bob');
END;
/
이는 다음과 같은 출력을 생성합니다:
Hello, Alice!
Hello, Bob!
파라미터 전달 방법
절차 호출 시 파라미터를 전달하는 두 가지 주요 방법이 있습니다:
- 위치 표기법: 파라미터가 정의된 순서대로 값을 전달합니다.
- 이름 표기법: 각 값이 어떤 파라미터에 해당하는지 지정합니다.
이 두 가지 방법을 새로운 절차와 함께 보겠습니다:
CREATE OR REPLACE PROCEDURE calculate_rectangle(
p_length IN NUMBER,
p_width IN NUMBER,
p_area OUT NUMBER,
p_perimeter OUT NUMBER
) IS
BEGIN
p_area := p_length * p_width;
p_perimeter := 2 * (p_length + p_width);
END;
/
이제 두 가지 표기법을 사용하여 절차를 호출해 보겠습니다:
DECLARE
v_area NUMBER;
v_perimeter NUMBER;
BEGIN
-- 위치 표기법
calculate_rectangle(5, 3, v_area, v_perimeter);
DBMS_OUTPUT.PUT_LINE('위치: Area = ' || v_area || ', Perimeter = ' || v_perimeter);
-- 이름 표기법
calculate_rectangle(p_width => 3, p_length => 5, p_perimeter => v_perimeter, p_area => v_area);
DBMS_OUTPUT.PUT_LINE('이름: Area = ' || v_area || ', Perimeter = ' || v_perimeter);
END;
/
두 호출 모두 동일한 결과를 생성합니다:
위치: Area = 15, Perimeter = 16
이름: Area = 15, Perimeter = 16
이름 표기법은 많은 파라미터가 있거나 선택적 파라미터를 건너뛰고 싶을 때 특히 유용합니다.
그리고 여러분! 우리는 PL/SQL 절차의 기본을 다루었고, 생성에서 실행에 이르기까지, 심지어 파라미터와 그 전달 방법에 대해서도 다루었습니다. 연습이 완벽을 만든다는 것을 기억하고, 자신의 절차를 실험해 보세요.
마무리하기 전에 간단한 이야기를 하나 해드리겠습니다: 데이터베이스 관리자가 왜 아내를 떠났을까요? 그녀는 너무 많은 시점을 가지고 있었고, 정규화되지 않았기 때문입니다!
기쁜 코딩을 하고, 절차가 항상 성공적으로 실행되길 바랍니다!
Credits: Image by storyset