반응형
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 127 128 129 130 | /* 변수 - 변수의 생성 규칙 : 반드시 문자로 시작해야 한다 : 문자나 숫자, 특수문자를 포함할 수 있다 : 변수명은 30byte이하여야 한다 : 예약어(키워드)를 사용할 수 없다 - 변수의 선언은 선언부(declare)에서 선언, 값으로 초기화 가능 - 실행부에서 실행될 경우 값이 할당된다 - 서브프로그램의 파라미터로 전달되기도 하며, 서브 프로그램의 출력결과를 저장하기도 한다 - 변수 선언 예 emp_no number(6,3) : 숫자를 저장하는 변수로 총6자리를 의미하며, 소수점 이하 3자리를 의미한다. emp_name varchar2(5) : 문자를 저장하는 변수로 총 5byte를 저장할 수 있다. emp_date date : 날짜를 저장하는 변수 - 변수의데이터 타입 char : 고정길이의 문자를 저장, 기본최소값 1 ~ 최대 32,767byte를 저장 varchar2 : 가변길이의 문자를 저장, 기본값은 없다. 최대 32,767byte 값을 저장 number(전체자릿수, 소수점이하 자릿수) : 전체자릿수와 소수점이하 자리 수를 가진 숫자를 저장 전체자리 수 범위는 1~38까지 가능하고, 소수점 자리수의 범위는 -84~127까지 가능 binary_double : 부동 소수점 수를 저장, 9byte 필요 date : 날짜 및 시간을 저장, 초단위로 저장 날짜의 범위는 4712B.C ~ 9999A.D timestamp : date 타입을 확장한 개념, 연도 / 월 / 일 / 시 / 분 /초 및 소수로 표시되는 초단위를 저장 자리수를 표현할 때는 0~9 범위의 정수를 사용, 기본값은 6 - 참조변수 테이블명.필드명%TYPE empNo empolyees.employee_id%TYPE <- employees테이블의 employee_id타입을 empNo의 타입으로 사용하겠다는 의미 emp_name employees.first_name%TYPE <- employees테이블의 first_name과 동일한 데이터 타입으로 선언 empRow employees%ROWTYPE <- employees테이블의 모든 칼럼을 한꺼번에 저장하기위한 변수로 선언 */ create table employees1 as select employee_id, salary, department_id from employees; select * from employees1; set serveroutput on; declare empNo employees1.employee_id%TYPE; empSalary employees1.salary%TYPE; begin select employee_id, salary into empNo, empSalary from employees1 where department_id = 10; dbms_output.put_line(empNo ||' '||empSalary); end; / declare emp_row employees1%RowType; begin select * into emp_row from employees1 where employee_id = 100; dbms_output.put_line( emp_row.employee_id || ' ' || emp_row.salary || ' ' || emp_row.department_id ); end; / create table row_test( no number, name varchar2(20), hdate date ); create table row_test2 as select * from row_test; insert into row_test values(1,'아무개',sysdate); insert into row_test values(2,'홍길동',sysdate); insert into row_test values(3,'고길동',sysdate); select * from row_test; commit; declare c_rec row_test%ROWTYPE; begin select * into c_rec from row_test where no=3; insert into row_test2 values c_rec; end; / select * from row_test2; | cs |
반응형
'프로그래밍 > SQL' 카테고리의 다른 글
[Oracle SQL] 콜렉션, 바인드 변수 사용 (0) | 2017.09.30 |
---|---|
[Oracle SQL] ROWTYPE 변수 및 복합변수 활용 (0) | 2017.09.08 |
[Oracle SQL] PL/SQL (0) | 2017.08.21 |
[Oracle SQL] 계층형 쿼리 (0) | 2017.08.17 |
[Oracle SQL] Sequence (0) | 2017.08.16 |