[ ORACLE rowType 변수 및 복합변수 활용 예 ]
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | --[ rowType 변수 및 복합변수 활용의 예 ] -- : rowType 변수를 활용한 데이터의 변경 DECLARE c_rec row_test%ROWTYPE; BEGIN select * into c_rec from row_test where no = 3; -- 대입연산자는 := 를 사용해야 한다.(주의!) c_rec. name := '강길동' ; -- row(행 전체)를 c_rec로 바꾸는 방법 update row_test2 set row = c_rec where no = 3; END ; / select * from row_test2; -- 사용자로 부터 두개의 숫자를 입력받아서 합을 구하는 예 -- 치환연산자 & 사용) set SERVEROUTPUT ON ; declare no1 number := &no1; -- 사용자로부터 입력을 받아 값을 할당 no2 number := &no2; sumV number; begin sumV := no1 + no2; DBMS_OUTPUT.put_line( '첫번째 수' ||no1|| '두번째 수' ||no2|| '합' ||sumV); end ; / -- 복합변수 ) -- 직접 복합 타입을 지정할 수도 있다. -- record Type 변수 지정 방법 --1. type 타입명 is record(); --2. 식별자 타입명 declare type emp_rec is record (emp_id employees.employee_id%type, emp_name employees.first_name%type, emp_job employees.job_id%type ); rec1 emp_rec; -- 위에서 정의한 타입을 사용해 변수 선언 begin select employee_id, first_name, job_id into rec1 from employees where department_id = 10; DBMS_OUTPUT.put_line( '사번 이름 업무ID' ); DBMS_OUTPUT.PUT_LINE(rec1.emp_id|| ' ' ||rec1.emp_name|| ' ' ||rec1.emp_job); end ; / declare type emp_rec2 is record ( emp_id employees.employee_id%type, emp_name employees.last_name%type, emp_email employees.email%type, emp_salary employees.salary%type ); rec2 emp_rec2; -- 사원번호는 사용자로부터 입력받도록 vemp_id employees.employee_id%type := '&사번' ; begin select employee_id, last_name, NVL(email, '없음' ), salary into rec2 from employees where employee_id = vemp_id; -- 사원번호가 사용자로부터 입력받은 것과 같은 정보 DBMS_OUTPUT.put_line( '사번:' ||rec2.emp_id); DBMS_OUTPUT.put_line( '이름:' ||rec2.emp_name); DBMS_OUTPUT.put_line( '이메일;' ||rec2.emp_email); DBMS_OUTPUT.put_line( '월급:' ||rec2.emp_salary); end ; / -- 지금까지 공부한 PL/SQL 부분 연습하기 -- declare -- 1.일반 변수 선언법 no number(10); strValue varchar2(20); -- 2.기존 테이블의 특정 필드의 타입으로 선언하는 방법 emp_id employees.employee_id%TYPE; emp_name employees.first_name%TYPE; -- employees테이블의 first_name 필드와 같은 타입으로 선언 -- 3.특정 기존 테이블과 동일한 복합 타입으로 지정하는 방법 emp_rec employees%ROWTYPE; dep_rec departments%ROWTYPE; -- 4.사용자에게 입력을 받아 선언한 변수에 데이터를 넣는 방법 input_data row_test. no %TYPE := '&no번호' ; -- 5.사용자 지정 복합 타입으로 변수를 선언하는 방법 type myType is record ( my_no row_test. no %TYPE, my_name row_test. name %type, my_hdate row_test.hdate%type ); myDefVal myType; begin select no , name , hdate into myDefVal from row_test where no = 3; myDefVal.my_name := '수정합니다.' ; update row_test set row = myDefVal where no = input_data; -- 사용자가 입력한 no번호에 해당하는 필드 값을 수정하도록... end ; / select * from row_test; |
'스터디 > DB(ORACLE)' 카테고리의 다른 글
ORACLE 조건문(IF,CASE) -(5) (0) | 2017.09.14 |
---|---|
ORACLE TABLE TYPE(컬렉션), 바인드 변수 -(4) (0) | 2017.09.14 |
ORACLE PL/SQL 변수 선언 및 데이터 타입 - (2) (0) | 2017.09.12 |
ORACLE PL/SQL 개념 - (1) (0) | 2017.09.11 |
ORACLE 시퀀스(sequence) (0) | 2017.09.08 |