SQL> create table ocstudy.emp (empno number);
테이블이 생성되었습니다.
SQL> create or replace procedure ocstudy.insert_emp ( p_empno number ) as
begin
insert into ocstudy.emp (empno) values ( p_empno );
commit;
end insert_emp;
/ 2 3 4 5 6
프로시저가 생성되었습니다.
SQL> create or replace procedure ocstudy.insert_emp_cu ( p_empno number )
authid current_user as
begin
insert into ocstudy.emp (empno) values ( p_empno );
commit;
end insert_emp_cu;
/ 2 3 4 5 6 7
프로시저가 생성되었습니다.
SQL> create or replace procedure ocstudy.insert_emp_df ( p_empno number )
authid definer as
begin
insert into ocstudy.emp (empno) values ( p_empno );
commit;
end insert_emp_df;
/ 2 3 4 5 6 7
프로시저가 생성되었습니다.
SQL> exec ocstudy.insert_emp (1);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select * from ocstudy.emp;
EMPNO
----------
1
SQL> exec ocstudy.insert_emp_cu (2);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select * from ocstudy.emp;
EMPNO
----------
1
2
SQL> exec ocstudy.insert_emp_df (3);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select * from ocstudy.emp;
EMPNO
----------
1
2
3
SQL> grant execute on ocstudy.insert_emp to scott;
권한이 부여되었습니다.
SQL> grant execute on ocstudy.insert_emp_cu to scott;
권한이 부여되었습니다.
SQL> grant execute on ocstudy.insert_emp_df to scott;
권한이 부여되었습니다.
SQL> grant select on ocstudy.emp to scott;
권한이 부여되었습니다.
SQL> exec ocstudy.insert_emp (10);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select * from ocstudy.emp;
EMPNO
----------
1
2
3
10
SQL> exec ocstudy.insert_emp_cu (20);
BEGIN ocstudy.insert_emp_cu(20); END;
*
1행에 오류:
ORA-01031: 권한이 불충분합니다
ORA-06512: "OCSTUDY.INSERT_EMP_CU", 줄 4에서
ORA-06512: 줄 1에서
SQL> select * from ocstudy.emp;
EMPNO
----------
1
2
3
10
SQL> exec ocstudy.insert_emp_df (30);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> select * from ocstudy.emp;
EMPNO
----------
1
2
3
10
30
- 강좌 URL : http://www.gurubee.net/lecture/3507
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.