💡근태 조회 근태 테이블을 만들어 9월의 근태 조회를 할 수 있도록 해보자. 그런데 출결이 있는 경우에만 조회가 되고, 결석한 날짜 또는 주말, 공휴일에는 근태 조회가 안 되고 있다. 이러한 빠진 날짜 메꾸는 작업은 꼭 근태 데이터가 아니더라도 많은 곳에서 쓰일 수 있다. 1. ANSI-SQL 2. PL/SQL 3. JAVA 위의 3가지 방법으로 근태 조회를 할 수 있다. PL/SQL과 JAVA에서는 for문으로 구현을 하며, ANSI-SQL에서는 계층형 쿼리로 구현을 한다. 먼저 PL/SQL로 구현하는 방식을 알아보도록 하자. create table tblDate ( seq number primary key, state varchar2(30) not null,--근태 상황 regdate date not..
[Oracle] PL/SQL 프로시저 💡PL/SQL PL/SQL의 정식 명칭은 Oracle's Procedural Language extension to SQL이다. PL/SQL은 기존의 ANSI-SQL에 절차 지향 언어 기능을 추가한 것이다. 우리가 쓰는 SQL은 문장 단위의 실행만을 할 수 있었다. 하나 isaac-christian.tistory.com 이번 글에서는 프로시저를 CRUD로 사용하는 방법에 대해 다룬다. 1. 단일값 (단일 레코드) a. number b. varchar2 c. date 2. 다중값 (다중 레코드) a. cursor 커서 [Oracle] PL/SQL Cursor 📌cursor 커서(cursor)는 SQL 결과 집합을 참조하고 조작하는 데 사용되는 데이터베이스 개체이다. 커..
💡명령어 실행 처리 과정 클라이언트 컴퓨터에는 SQL Developer, DBeaver 같은 프로그램이 있고, 오라클 서버 컴퓨터에는 실제 프로세스가 동작하는 메모리와 오라클이 저장되어 있는 저장장치가 있다. ANSI-SQL과 익명 프로시저는 동작 방식이 같고, 실명 프로시저는 동작 방식이 다르다. 1. ANSI-SQL 2. 익명 프로시저 실행 과정 a. 클라이언트에서 구문(select)을 작성한다. b. 실행 (Ctrl + Enter) c. 명령어를 오라클 서버에 전달 d. 서버가 명령어를 수신 e. 구문 분석(파싱) + 문법 검사 f. 컴파일 g. 실행 (프로시저 실행) h. 결과 셋 도출 i. 결과 셋을 클라이언트에게 반환 j. 결과 셋을 화면에 출력 실행 과정 설명 a: 구문을 작성한다고 뭔가 일..
💡익명 프로시저 declare -- 선언부 begin -- 구현부 end; declare부터 begin까지 선언부, begin부터 end까지가 구현부이다. serveroutput on set serveroutput on; set serveroutput off; dbms.output이 콘솔로 보이게 하려면 먼저 serveroutput을 반대로 꺼줄 때에는 off 키워드를 사용한다. 익명 프로시저의 사용 DECLARE num number; name varchar2(30); today DATE; BEGIN num := 10; dbms_output.put_line(num); name := 'Isaac'; dbms_output.put_line(name); today := sysdate; dbms_output.pu..
💡예외 처리 예외 처리는 실행부에서(being~end) 발생하는 예외를 처리하는 블록(exception 블록)이다. 예외 발생 --ORA-06502: PL/SQL: numeric or value error: character string buffer too small DECLARE vname varchar2(5); BEGIN dbms_output.put_line('하나'); SELECT name INTO vname FROM tblInsa WHERE num = 1001; dbms_output.put_line('둘'); dbms_output.put_line(vname); END; 위 프로시저는 변수의 길이가 저장하려는 데이터보다 짧아 오류가 발생하고 있다. 절차를 갖게 되었을 때의 에러 발생은 실행 자체에 ..
📌cursor 커서(cursor)는 SQL 결과 집합을 참조하고 조작하는 데 사용되는 데이터베이스 개체이다. 커서를 사용하면 결과 집합의 행을 하나씩 탐색하여 각 행의 데이터에 접근할 수 있다. select into select into는 결과셋의 레코드가 1개일 때만 사용할 수 있다. cursor cursor는 결과셋의 레코드가 다중 레코드일 때 사용한다. 커서를 통해 가져온 데이터를 처리하기 위해 루프를 사용한다. 루프는 커서에서 데이터를 한 행씩 가져와서 처리할 수 있도록 하며, exit when문을 사용하여 루프를 종료한다. cursor의 선언 CURSOR vcursor IS SELECT name FROM tblInsa; cursor를 선언할 때에는 앞에 식별자가 오고, 뒤에 자료형이 온다. 이처..
💡조건문 [Java] 조건문: if문, switch문 제어문은 수많은 명령어들의 흐름(실행 순서)을 통제하는 수단을 의미한다. 제어문의 끝에 문장 종결자(;)를 사용하지 않는다는 특징이 있다. 제어문은 크게 조건문(조건 제어문)과 반복문(반복 isaac-christian.tistory.com PL/SQL 조건문은 Java의 조건문과 비슷한 점이 많다. if문 DECLARE vnum NUMBER := 10; BEGIN IF vnum > 0 THEN dbms_output.put_line('양수'); END IF; END; if else문 DECLARE vnum NUMBER := 10; BEGIN IF vnum > 0 THEN dbms_output.put_line('양수'); ELSE dbms_output.p..
💡PL/SQL PL/SQL의 정식 명칭은 Oracle's Procedural Language extension to SQL이다. PL/SQL은 기존의 ANSI-SQL에 절차 지향 언어 기능을 추가한 것이다. 우리가 쓰는 SQL은 문장 단위의 실행만을 할 수 있었다. 하나의 INSERT와 UPDATE가 위아래에 있다면 우연히 코딩한 위치가 비슷할 뿐, 서로 독립적인 것이었다. PL/SQL은 ANSI-SQL의 확장팩(변수, 제어 흐름(제어문), 객체(메서드) 정의)으로서, 이러한 SQL의 한계를 해소한다. 프로시저 프로시저(Procedure)는 메서드, 함수 등으로 구성된 순서가 있는 명령어의 집합이다. 모든 PL/SLQ 구문은 프로시저 내에서만 작성/동작이 가능하다. 이때 프로시저가 아닌 영역은 ANSI-..