전체보기: 525개의 글
1. ggusr 계정에 PR_EMP_TEST (프로시저)를 실행할 수 있는 권한을 부여하고 ggusr 세션에서 수행해보아라. 1) 권한 부여하기 GRANT EXECUTE ON PR_EMP_TEST TO ggusr2) SQL > connect ggusr/123123; SQL > EXEC PR_EMP_TEST; 2. AUTHID CURRENT USER1) 더 엄격한 권한 관리가 가능하다. 2) 프로시저를 실행할 수 있는 권한을 부여하더라도 TB_LS_EMP867 테이블을 조회할 수 있는 권한이 같이 부여되는 것은 아니다. 즉,,SQL > EXEC PR_EMP_TEST; ( 수행 O )SQL > SELECT * FROM TB_LS-EMP867; ( 수행 X ) ※ autonomous : 자율적인※ PRAGMA..
참조: www.grubee.net/lecture/1075 패키지(Package)는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로시저와 함수들의 집합이다.패키지는 선언부와 본문 두 부분으로 나누어 진다. 1. 패키지 선언절 문법 선언부CREATE [ OR REPLACE ] PACKAGE 패키지명 IS | AS [ 변수 선언절 ][ 커서 선언절 ][ 예외 선언절 ][ Procedure 선언절 ][ Function 선언절 ]END 패키지명 - 선언절은 패키지에 포함될 PL/SQL 프로시저, 함수, 커서, 변수, 예약절을 선언한다. - 패키지 선언부에서 선언한 모든 요소들은 패키지 전체에 적용된다. - 즉, 선언부에서 선언한 변수는 PUBLIC 변수로 사용된다. 2. 패키지 본문 문법 본문..
create or replace PROCEDURE PR_POPULAR_MOVE_INTO_RCMD (P_USER_NO NUMBER) IS CURSOR RCMD_CURSOR IS SELECT Y.RO, SUBSTR(Y.CRS_SESS_ID,1,7) CRS_ID, Y.CRS_SESS_ID, Y.WR_DTM FROM( SELECT ROWNUM RO, X.* FROM ( SELECT * FROM TB_ST_CRS_STTS_DAY WHERE RCMD_KIND_CD = '2' AND WR_PER_NO = P_USER_NO ORDER BY RCMD_DT, SORT_OR )X )Y WHERE Y.RO
-- 1. RANK 함수 알아보기 -- 2. REF CURSOR (DECLARE 절에서 선언 X, BEGIN 절에서 선언하는 CURSOR ) -- 동적 SQL 에서 커서를 사용하기 위한 CURSOR ( 중요★☆ ) -- 1) 커서를 사용하려면 아래와 같은 절차가 진행된다. ★ -- CURSOR 선언 >> CURSOR OPEN >> CURSOR에 있는 내용 FETCH >> CURSOR CLOSE -- 2) 아래의 예와 같이 선언하면 쿼리의 결과가 ○ 메모리 ○ 에 적재된다. ★-- ex) CURSOR EMP_CURSOR IS -- SELECT EMP_NO, EMP_ID-- FROM TB_LS_EMP867; -- 3) 우리가 알고있는 커서 선언은 DECLARE 절 OR(IS..) 에서 수행하는데,-- REF..
1. 동적 SQL-- 1) PL/SQL 을 실행할 때마다 SQL이 동적으로 변경된다는 의미-- 2) 프로시저 생성할 때 SELECT문의 INTO절 없이 사용 가능해진다. -- 3) 프로시저 생성 시, DDL문이나 DCL문을 포함시킬 수 있다.-- ( DDL : CREATE, ALTER, DROP, TRUNCATE, RENAME )-- ( DCL : GRANT, REVOKE ) 2. 동적 SQL을 사용하는 방법 2가지-- 1) EXECUTE IMMEDIATE 절 사용하는 방법 (가장 많이 활용)- INTO절 없는 SELECT 문장- DDL 문을 PL/SQL에서 수행- DML 문을 PL/SQL에서 수행- ANONYMOUS PL/SQL을 수행 -- 2) DBMS_SQL 패키지를 이용하는 방법 예제 1-1. 부..
-- 1. 예외처리가 필요한 이유-- 1) 오라클 에러메세지를 사용자의 편의에 따라 출력할 수 있다. -- 2) 프로그램을 수행되게 할 때, 몇가지 오류가 있는 data 때문에 -- 전체 프로그래밍이 실패하는 현상을 방지하기 위해서 필요하다. -- 2. 예외의 종류 3가지 -- 1) 미리 정의 해놓은 예외처리-- 2) 미리 정의하지 않은 예외처리-- 3) 사용자 정의 예외처리 -- 3. 예외 트랩에 대한 함수-- 1) SQLCODE 오류코드에 대한 숫자값 반환-- 2) SQLERRM 오류번호와 연관된 메시지를 반환 ★ 예제 1. 미리 정의해놓은 예외처리를 이용해서 사원번호를 입력하였을 때,-- 해당사원은 없습니다. 라는 메세지를 출력하게 하라. (월급출력) SET SERVEROUTPUT ON;ACCEPT..
-- 1. SET VERIFY OFF : PL/SQL 실행시 메시지를 출력하지 않는 설정 -- 2. 변수이름 지정방법-- 1) 문자로 시작-- 2) 문자 + 숫자 가능 -- 3) 특수문자 $,_,# 포함-- 4) 변수의 길이는 30자 이하 -- 5) 오라클 예약어는 변수명으로 사용할 수 없음 -- 3. 타입설정 방법-- 1) 현재까지 PL/SQL 작성의 문제점 : 컬럼길이를 몰라서 임의로 정해버리는 문제점-- 2) 해결 : %TYPE 속성-- 위와 같이 데이터 타입을 선언하지 않으면, 추후에 데이터 타입을 변경할때 마다 수반하는 작업이 많아진다. -- 4. NUMBER -- 변수 선언 시, NUMBER(7,2)의 의미는 전체 개수 7개, 소수점 개수 2개-- ex) 12345.12 -- 5. 불린변수 선..
1. 익명블럭 ( anonymous PL/SQL block )- 이름이 없는 pl/sql- DB에 이름을 가지고 저장되지 않는 형식- 아래의 pl/sql 종류는 이름을 가지고 db에 저장되는 형식 2. Procedure 3. Function 4. Trigger 5. Package 출처: https://sourceflower.tistory.com/38?category=608037 [소스플로우]
SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST9(P_DEPT_NO NUMBER) -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.IS CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = P_DEPT_NO; BEGIN -- CURSOR OPEN 사용 X, FETCH 사용 X, EMP_RECORD 임의부여 FOR EMP_RECORD IN EMP_CURSOR LOOP DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMP..
SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE PR_EMP_TEST7(P_DEPT_NO NUMBER) -- CURSOR 명 : EMP_CURSOR -- EMP_CURSOR 에 조건에 맞는 TB_LS_EMP867 테이블에서 가져온 데이터들을 담아준다.IS CURSOR EMP_CURSOR IS SELECT EMP_NO, EMP_ID, EMP_NM, DEPT_NO, SAL FROM TB_LS_EMP867 WHERE DEPT_NO = &P_DEPT_NO; -- 변수를 선언한다. V_EMP_NO NUMBER(8) := 0; V_EMP_ID VARCHAR2(30); V_EMP_NM VARCHAR2(20); V_DEPT_NO NUMBER(4) := 0; V_SAL NUMBER(..