공룡이라는 ORACLE

Procedure

Jungsoomin :) 2020. 10. 24. 00:15

프로시져는 리턴값을 가지지 못한다. 하지만 out 매개변수를 사용하여 매개변수에 값을 대입할 수는 있다.

 

사용하는 매개변수는 IN, OUT, INOUT 이 있다.

 

 

파라미터만을 가지는 프로시져 , IN 매개변수를 사용함

create or replace procedure proc_test(
    v_dno in departments.dno%type
)
    is
     v_dname   departments.dname%type;
    begin
        select dname into v_dname from departments
            where dno = v_dno;
        dbms_output.put_line('프로시져 작동' || v_dname);
    end;
    /
    
    select * from user_source where name = Upper('proc_test');
    
    execute proc_test(10);

 


OUT 매개변수를 사용하여 파라미터에 값을 저장한 모습.

create or replace procedure proc_test(
    v_dno in departments.dno%type,
    v_dname out departments.dname%type
)
    is
    begin
        select dname into v_dname from departments
            where dno = v_dno;
        dbms_output.put_line('프로시져 작동' || v_dname);
    end;
    /
    
    select * from user_source where name = Upper('proc_test');
    
    --변수 생성
    variable v_dname varchar2(255);
    -- out 매개변수는 : 을 사용
    execute proc_test(10,:v_dname);
    -- print 로 출력
    print v_dname;

커서를 이용한 프로시져.

create or replace procedure proc_test
    is
    cursor c1 is select * from departments;
    row_dept departments%rowtype;
    begin
        open c1;
        dbms_output.put_line('프로시져 작동');
        loop
            exit when (c1%notfound);
            fetch c1 into row_dept; -- fetch 커서 into 변수
            dbms_output.put_line(row_dept.dno || ' / '||row_dept.dname||' / '||row_dept.loc);
        end loop;    
        close c1;
    end;
    /
    
    select * from user_source where name = Upper('proc_test');
    

    -- out 매개변수는 : 을 사용
    execute proc_test;

for in 문을 이용한 커서 사용

create or replace procedure proc_test
    is
    cursor c1 is select * from departments;
    row_dept departments%rowtype;
    begin
        for row_dept in c1 loop
            dbms_output.put_line(row_dept.dno || ' / ' || row_dept.dname || ' / ' || row_dept.loc);
        end loop;
    end;
    /
    
    select * from user_source where name = Upper('proc_test');
    

    -- out 매개변수는 : 을 사용
    execute proc_test;

'공룡이라는 ORACLE' 카테고리의 다른 글

Trigger  (0) 2020.10.23
FUNCTION  (0) 2020.10.23
다중 insert 시 시퀀스 넘버가 PK 제약조건을 어긋내는 경우 해결방안.  (0) 2020.10.20
TopN  (0) 2020.10.06
간단한 백업  (0) 2020.10.03