스터디/DB(ORACLE) ORACLE PL/SQL 변수 선언 및 데이터 타입 - (2) 고무곰(GomuGom) 2017. 9. 12. 17:04 /* [ PL/SQL 변수 ] - 변수의 생성 규칙 1. 반드시 문자로 시작해야 한다. 2. 문자나, 숫자, 특수문자를 포함할 수 있다. 3. 변수명은 30Byte 이하여야 한다. 4. 예약어(키워드)를 사용하면 안된다. - 변수의 선언은 선언부(Delcare 블럭)에서 선언되어야 하고, 값으로 초기화가 가능하다. - 실행부(Begin~End)에서 실행될 경우 값이 할당 된다. - 서브프로그램의 파라미터로 전달되기도 하며, 서브프로그램의 출력 결과를 저장하기도 한다. - 선언의 예> emp_no number(6,3) : 숫자를 저장하는 변수로 총 6자리며 소수점 밑 3자리 emp_name varchar2(10) : 문자를 저장하는 변수로 총 10Byte 저장가능 변수 emp_date date : 날자를 저장하는 변수 - 데이터 타입> - char : 고정길이 문자 타입, 기본최소값 1, 최대 32,767Byte를 저장 가능 - varchar2 : 가변길이 문자 타입, 기본값은 없다. 최대 32,767Byte 저장 가능. - number(전체자리수,소수점이하 자리수) : 숫자를 저장 전체자리수 범위는 1~38까지 가능하고, 소수점 자리수 범위는 -84~127까지 가능 - binary_double : 부동 소수점 수를 저장하는 타입, 9Byte 필요 - date : 날짜 및 시간을 나타내는 타입, 초단위로 저장, 날짜의 범위는 4712B.C ~ 9999 A.D - timestamp : date 타입을 확장, 연도, 월, 일, 시, 분, 초 및 소수로 표시되는 초단위를 저장. ** 참조 변수 ** 테이블명.필드명%Type empNo employees.employee_id%TYPE // 현재 employees테이블의 employee_id의 타입을 그대로 가져오겟다. : employees 테이블의 employee_id와 동일한 데이터 타입으로 선언한다는 의미. emp_name employees.frst_name%TYPE : employees 테이블의 first_name과 동일한 데이터 타입으로 선언 empRow employees%ROWTYPE : employees 테이블의 모든 컬럼을 한꺼번에 저장하기 위한 변수로 선언 */ -- EX) create table employees1 as select employee_id, salary, department_id from employees; set serveroutput on; DECLARE empNo employees.employee_id%TYPE; empSalary employees.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; -- employees1 테이블의 모든 컬럼 타입을 의미함 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; 저작자표시 비영리