Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Android
- 오라클
- 이클립스
- Android SDK
- 설치
- iPhone
- MVC
- Eclipse
- 예제
- Objective C
- 스프링
- ibatis bind
- IT·컴퓨터
- java
- 아이폰
- 우편번호
- SEQUENCE
- zipcode
- 연동
- 안드로이드
- ibatis parameter
- SQL
- 자바
- IO
- ibatis 개행
- Oracle
- jdbc
- Spring
- 개행처리
- 외래키
Archives
- Today
- Total
MisoBoy Blog...
[20110715] SEQUENCE & PROCEDURE 본문
SELECT * FROM EMP; DELETE FROM EMP WHERE empno = 7499; REM Stored PROCEDURE(저장프로시저) --1)목적 : 속도, 보안 --2)compile(pcode로 변환)상태로 RDBMS 에 저장 --3)나중에 실행될 일련의 명령의 집합 --4)리턴하는 행의 갯수가 많으면 에러난다. --5)pl/sql에서 SELECT는 반드시 SELECT INTO 를 사용해야 --6)syntax CREATE OR REPLACE PROCEDURE procedure_name ( 매개변수 영역 변수이름 변수모드 변수타입 v_empno IN(OUT, IN OUT) emp.EMPNO%TYPE ) IS 내부변 BEGIN pl/SQL 문장들 END; --test.sql로 저장 CREATE OR REPLACE PROCEDURE test ( v_empno IN emp.empno%TYPE ) IS BEGIN DELETE FROM emp WHERE empno = v_empno; END test; / --실행할 때 EXEC test(7922); DESC DEPT; CREATE OR REPLACE PROCEDURE sp_insert_dept ( v_deptno IN dept.deptno%TYPE, v_dname IN dept.dname%TYPE, v_loc IN dept.loc%TYPE ) IS BEGIN INSERT INTO DEPT VALUES (v_deptno, UPPER(v_dname), UPPER(v_loc)); END sp_insert_dept; EXEC sp_insert_dept(50, 'marketting', 'yatap'); SELECT * FROM dept; SELECT * FROM EMP WHERE job = UPPER('analyst'); CREATE OR REPLACE PROCEDURE sp_emp_sal ( v_sal IN emp.sal%TYPE, v_job IN emp.job%TYPE ) IS BEGIN UPDATE EMP SET sal = v_sal WHERE job = UPPER(v_job); END sp_emp_sal; DROP PROCEDURE sp_emp_sal; EXEC sp_emp_sal(1000, 'clerk'); SELECT sal FROM emp WHERE job = 'CLERK'; CREATE OR REPLACE PROCEDURE sp_emp_select ( v_empno IN emp.EMPNO%TYPE, v_ename OUT emp.ENAME%TYPE, v_sal OUT emp.sal%TYPE ) IS BEGIN SELECT ename, sal INTO v_ename, v_sal FROM EMP WHERE empno = v_empno; END sp_emp_select; SQL> var g_ename VARCHAR2(20); SQL> var g_sal NUMBER; SQL> EXEC sp_emp_select(7566, :g_ename, :g_sal); PL/SQL 처리가 정상적으로 완료되었습니다. SQL> print g_ename; G_ENAME -------------------------------- JONES SQL> print g_sal; G_SAL ---------- 2975 CREATE SEQUENCE emp_empno_seq START WITH 1 INCREMENT BY 1 MAXVALUE 999 NOCYCLE CACHE 10; --Q)emp 테이블에서 새로운 사원의 정보를 이름, 업무, --매니저, 급여를 입력받아 등록하는 emp_input 프로시저 --를 생성하시오. 단, 부서번호는 매니저의 부서 번호와 --동일하게 하고 보너스는 SALESMAN 은 0을 그 외의 부서는 --NULL을 입력하시오. CREATE OR REPLACE PROCEDURE emp_input ( v_name IN emp.ENAME%TYPE, v_job IN emp.JOB%TYPE, v_mgr IN emp.MGR%TYPE, v_sal IN emp.SAL%TYPE ) IS v_comm emp.comm%TYPE; v_deptno emp.DEPTNO%TYPE; BEGIN IF UPPER(v_job) = 'SALESMAN' THEN v_comm := 0 ELSE v_comm := NULL END IF; SELECT deptno INTO v_deptno FROM emp WHERE empno = v_mgr; INSERT INTO EMP VALUES(EMP_EMPNO_SEQ.NEXTVAL, v_name, UPPER(v_job), v_mgr, SYSDATE, v_sal, v_comm, v_deptno); END emp_input;
'Oracle' 카테고리의 다른 글
Oracle Grouping(), ROLLUP, CUBE (0) | 2012.11.30 |
---|---|
Oracle SQL 20 문제 & 정답풀이 (0) | 2011.07.18 |
[20110714] Oracle DDL & 제약조건 & VIEW & ROWNUM & SEQUENCE & SYNONYM & INDEX (0) | 2011.07.14 |
[20110713] Oracle DATATYPE & UNIQUE & FOREIGN KEY (0) | 2011.07.13 |
[20110712] Oracle Transaction & DDL(CREATE, DROP, ALTER, COMMENT, TRUNCATE) (0) | 2011.07.12 |