쌍용교육(JAVA)/PL\SQL

실습문제(21일~22일차) [실습문제] 1.두 숫자를 제공하면 덧셈을 해서 결과값을 반환하는 함수를 정의하시오.(add_num) --내 답 CREATE OR REPlACE FUNCTION add_num(num_1 IN NUMBER, num_2 IN NUMBER) RETURN NUMBER IS result_num NUMBER; BEGIN result_num := num_1 + num_2; RETURN result_num; END; DECLARE RESULT NUMBER; BEGIN -- 함수 호출 RESULT := add_num(10, 20); -- 결과 출력 DBMS_OUTPUT.PUT_LINE('결과: ' || RESULT); END; --강사님 답 CREATE OR REPlACE FUNCTION ad..
PL/SQL 서브 프로그램 입력받은 값으로부터 10%의 세율을 얻는 함수 함수 입력받은 값으로부터 10%의 세율을 얻는 함수 --DECLARE와 같은 느낌으로 사용 CREATE OR REPLACE FUNCTION tax(p_value IN NUMBER) -- tax -> 함수명, p_value -> 파라미터, IN은 생략가능 RETURN NUMBER -- NUMBER -> 자료형 IS BEGIN RETURN p_value*0.1; END; 함수폴더를 클릭해서 컴파일이 되었는지 TAX 파일확인 호출해보기 SELECT TAX(100) FROM dual; SELECT empno,ename,sal,TAX(sal) tax FROM emp; 급여와 커미션을 합쳐서 세금 계산 CREATE OR REPLACE FUNC..
IF문 IF문 DECLARE grade CHAR(1); BEGIN --변수의 초기화 grade := 'B'; IF grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent'); ELSIF grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('Good'); ELSIF grade = 'C' THEN DBMS_OUTPUT.PUT_LINE('Fair'); ELSIF grade = 'D' THEN DBMS_OUTPUT.PUT_LINE('Poor'); END IF; END; Good CASE문 CASE문 DECLARE grade CHAR(1); BEGIN grade := 'C'; CASE grade WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Exc..
레코드 : 테이블의 컬럼들이 서로 다른 유형의 데이터 타입으로 구성되듯이 레코드 역시 해당필드(레코드에서는 요소란 말 대신 필드란 용어를 사용함)들이 각기 다른 데이터 타입을 가질 수 잇음. DECLARE --TYPE으로 선언한 레코드 TYPE RECORD1 IS RECORD(deptno NUMBER NOT NULL := 50, dname VARCHAR2(14), loc VARCHAR2(13)); --위에서 선언한 RECORD1을 받는 변수 선언 rec1 RECORD1; BEGIN --RECORD1 타입의 rec1의 dname 필드에 값 할당 rec1.dname := 'RECORD'; rec1.loc := 'SEOUL'; --rec1 레코드 값을 dept 테이블에 insert INSERT INTO dep..
콜렉션 콜렉션 --데이터를 여러개 사용 VARRAY는 VARIABLE ARRAY의 약자로 고정길이 (Fixed NUMBER)를 가진 배열 DECLARE TYPE VARRAY_TEST IS VARRAY(3) OF INTEGER; -- 타입 변수,크기,데이터타입 / 여기서 사이즈가 3이라고 고정해둠. varray1 VARRAY_TEST; --위에서 선언한 VARRAY_TEST 타입 변수지정 BEGIN varray1 := VARRAY_TEST(10,20,30); DBMS_OUTPUT.PUT_LINE(varray1(1)); DBMS_OUTPUT.PUT_LINE(varray1(2)); DBMS_OUTPUT.PUT_LINE(varray1(3)); END; 10 20 30 중첩 테이블 중첩 테이블 : varray와 ..
변수와상수 변수와 상수 변수 emp_num1 NUMBER(9); grade CHAR(2); emp_num2 INTEGER := 1; 상수 nYear CONSTANT INTEGER := 30 --(O) nYear CONSTANT INTEGER; --(X) 초기화를 하지 않았기 때문에. 반드시 데이터를 넣어줘야됨. %TYPE,%ROWTYPE %TYPE : 참조할 테이블에 있는 컬럼의 데이터 타입을 자동으로 가져옴. nSal emp.sal%TYPE; %ROWTYPE : %TYPE은 하나의 값에 대해 적용되지만, %ROWTYPE은 하나 이상의 값에 대해 적용. 로우타입 변수를 선언해서 테이블에 있는 로우를 대입.