[JDBC] 06 PL/SQL

프로그래밍/DB 2007. 11. 27. 14:05 Posted by galad

★ PL/SQL 간단 예제

SQL> ed an_1             // an_1.sql을 생성해서 간단한 PL/SQL문을 작성한다.


// 넘버 2개를 입력받아 첫번째 넘버에 해당하는 데이터의 age를 2배하여

// 두번째 넘버에 해당하는 데이터의 age에 넣는다.


accept a_one_num prompt '검색할 넘버는? '
accept a_two_num prompt '갱신할 넘버는? '

declare
   v_one_age NUMBER;    // 변수 이름이 먼저 온다. ㅡ.ㅡ;;
begin
   select age into v_one_age from test10_tbl where num = &a_one_num;
   update test10_tbl set age = (2 * v_one_age ) where num = &a_two_num;
end;


!!! 주의

첫번째 넘버로 검색했을 때, 데이터가 여러개가 나오면 에러 발생

"실제 인출은 요구된 것보다 많은 수의 행을 추출합니다"

-> 루프문으로 해결해야 한다.


★ 간단 예제2

SQL> ed an_2             // an_2.sql을 생성해서 간단한 PL/SQL문을 작성한다.


set echo off   // 에코 없애기
set verify off   // 마찬가지


accept a_sal prompt '얼마 원해?'
variable v_result varchar2(40);


declare
   v_sal number := &a_sal;
begin
   if(v_sal > 500) then
      :v_result := '진짜야? 짤리고 싶어?';
   elsif(v_sal > 300) then                      // else if 가 아니다 ㅡ.ㅡ;;
      :v_result := '그래? 일 열심히 했어?';
   else
      :v_result := '그거 가지고 괜찮아?';
   end if;
end;
/


print v_result   // 결과 출력


set verify on
set echo on



★ 프로시져 간단 예제

- empno를 입력받아 그 사람의 sal을 a_sal 로 돌려준다.


create or replace procedure proc1(a_empno in number, a_sal out number)
is
begin
   select sal into a_sal from emp where empno = a_empno;
end;
/


show errors   // 오류가 있나 체크



// 오라클 서버에 저장이 되어서 나중에 간단하게 실행시킬 수 있다.


SQL> variable v_salary number;      // 변수 선언?? - 결과값을 받는다.
SQL> exec proc1(7566, :v_salary);  // 프로시져 실행


PL/SQL 처리가 정상적으로 완료되었습니다.


SQL> print v_salary;   // 결과값 출력


  V_SALARY
----------
      2975


'프로그래밍 > DB' 카테고리의 다른 글

[펌] PL/SQL 02  (0) 2007.11.27
[Oracle/펌] PL/SQL 01  (0) 2007.11.27
[JDBC] 05 ResultSet  (0) 2007.11.27
[JDBC] 04 JDBC - Connection Pool...  (0) 2007.11.27
[JDBC] 03 3일째  (0) 2007.11.27