[오라클 PL/SQL] 프로시저 매개변수와 입력 값 매핑 방법


안녕하세요.

 

오늘은 오라클 PL/SQL에서 프로시저 생성하고 나서 호출하는 부분에서 매개변수와 입력 값을 매핑하는 방법에 대해서 알려드리려고 합니다.

 

프로시저의 매개변수가 많으면 실행할 때 매개변수 값의 개수나 순서를 혼동할 소지가 매우 많기 때문에 이러한 것을 사전에 방지하기 위해서 오라클에서는 프로시저를 호출할 때, 매핑을 할 수 있게 기능을 제공해 주고 있습니다.

 

그러면 바로 매핑하는 방법을 알려드릴게요!

 

먼저 아래와 같은 my_new_student_proc 프로시저가 있습니다.

 

my_new_student_proc 프로시저


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

CREATE OR REPLACE PROCEDURE WIN.my_new_student_proc

(

    p_school_no WIN.STUDENT.SCHOOL_NO%TYPE,

    p_class WIN.STUDENT.CLASS%TYPE,

    p_name WIN.STUDENT.NAME%TYPE,

    p_age WIN.STUDENT.AGE%TYPE,

    p_grade WIN.STUDENT.GRADE%TYPE,

    p_score WIN.STUDENT.SCORE%TYPE

)

 

IS 

    vn_cnt NUMBER := 0;

    

BEGIN

    --동일한 이름을 가진 학생이 있는지 체크

    SELECT COUNT(*)

    INTO vn_cnt

    FROM WIN.STUDENT

    WHERE 1 = 1

    AND NAME = p_name;

    

    --동일한 이름을 가진 학생이 없으면 INSERT

    IF vn_cnt = 0 THEN

        INSERT INTO WIN.STUDENT (SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE)

        VALUES (p_school_no, p_class, p_name, p_age, p_grade, p_score);

        

    --동일한 이름을 가진 학생이 존재 한다면 UPDATE

    ELSE

        UPDATE WIN.STUDENT

        SET 

            SCHOOL_NO = p_school_no,

            CLASS = p_class,

            NAME = p_name,

            AGE = p_age,

            GRADE = p_grade,

            SCORE = p_score

        WHERE 1 = 1

        AND NAME = p_name;

     

    END IF;

    

    COMMIT;

END;

/

 

Colored by Color Scripter

cs

 

위에 생성한 my_new_student_proc에서 매개변수를 보시게 되면 p_school_no, p_class, p_name, p_age, p_grade, p_score 이렇게 총 6가지의 매개변수를 입력 받을 수 있습니다.

 

그럼 이제 이 프로시저의 매개변수를 입력 값과 함께 매핑하여 호출해 보도록 하겠습니다.


프로시저 매핑 하여 실행


1

2

3

EXECUTE my_new_student_proc(p_school_no => '3',  p_class => '6'

                            p_name => '양다일', p_age => '56'

                            p_grade => '4', p_score => '100');

cs

 

위에서 보시는 것과 같이 “=>” 해당 문자를 이용하여 매개변수와 입력 값을 매핑하여 프로시저를 실행하시면 되겠습니다~~

 

감사합니다ㅎㅎ


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY