프로그래밍 75

Oracle PL/SQL - 동적 SQL

동적 SQL 사용 방법 실행 중 변경 가능한 문자열 변수 또는 문자열 상수로 제공된 SQL문을 실행 사용 예 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM emp' INTO v_cnt; 사용 가능한 SQL 모든 SQL문(DML, TCL, DDL, DCL) 장점 - 사전에 정의되지 않은 SQL을 실행 시에 확정하여 실행할 수 있다. - DML과 TCL외에도 DDL, DCL을 사용할 수 있다. 단점 프로그램을 작성하기가 복잡하다. 용도 - SQL이 몇 개 문장으로 고정될 수 없는 경우 - SQL이 실행될지 예측할 수 없는 경우 * 실행 방법 1. EXECUTE IMMEDIATE문을 사용하여 SQL을 실행하는 방법 2. 커서 변수를 사용하여 OPEN, FETCH, CLOSE문으로 SE..

프로그래밍 2021.09.24

Oracle PL/SQL - Cursor

1. 정의 * DB 서버의 SGA(System Global Area)에 저장되어 있는 특정 쿼리를 실행하기 위한 정보를 저장하는 PGA(Program Global Area) 내부의 Private SQL Area에 대한 포인터 2. 묵시적 커서와 명시적 커서 묵시적 커서(Implicit Cursor) 명시적 커서(Explicit Cursor) 커서 선언 없음 있음 사용 시 복잡도 단순 복잡 커서 제어 불가능 가능 유연성 낮음 높음 사용 가능한 SQL 유형 SELECT, INSERT, UPDATE, DELETE, MERGE SELECT 커서 속성 참조 SQL%커서속성 커서명%커서속성 전형적인 사용 방법 즉시 실행 OPEN, FETCH, CLOSE 3. 명시적 커서 * 명시적 커서는 DECLARE절에 CURS..

프로그래밍 2021.09.24

Oracle PL/SQL - Record

* 레코드를 사용하면 데이터 타입이나 길이가 다른 여러 변수들을 논리적으로 하나의 그룹으로 묶을 수 있다. 1. 선언 TYPE 타입명 IS RECORD 필드목록; 레코드변수명 타입명; 필드목록은 레코드의 필드 목록을 선언하는 부분으로, 형식은 CREATE TABLE문의 칼럼 선언가 유사한 형태를 가진다. (예시) DECLARE TYPE emp_type IS RECORD( empno NUMBER(4) NOT NULL := 0, ename emp.ename%TYPE, job VARCHAR2(9) ); v_emp emp_type; BEGIN v_emp.empno := 9000; v_emp.ename := '홍길동'; v_emp.job := '의적'; DBMS_OUTPUT.PUT_LINE('EMPNO = '||..

프로그래밍 2021.09.23

Oracle PL/SQL - Collection

※ Oracle PL/SQL은 컴포지트 데이터 타입으로 컬렉션과 레코드를 지원한다. - 컬렉션(Collection): 동일 타입 데이터의 반복 - 레코드(Record): 서로 다른 타입의 데이터 모음 1. 컬렉션 타입의 종류 Associative Array VARRAY Nested Table 컬렉션 항목의 개수 미지정 지정 미지정 인덱스 유형 문자열 또는 정수 정수 정수 초기화되지 않은 상태 Empty NULL NULL ADT(Abstract Data Type) 정의 불가능 가능 가능 - VARRAY, Nested Table 컬렉션 변수는 사용하기 전에 반드시 초기화해야 한다. * 컬렉션 타입과 대응되는 일반 자료 구조 일반 자료 구조 PL/SQL 컬렉션 타입 해시 테이블, 비순서 테이블 Associat..

프로그래밍 2021.09.23

Eclipse Spring Package - Git 연동

개인 프로젝트로 진행한 Java Spring 프로젝트를 Github에 연동해보고자 한다. 다른 블로그의 글을 보며 시도하는 중에 기록해놓는다면 추후 다시 확인해볼 수 있을 것이라 생각하여 기록한다. 먼저, Git에서 Remote 저장소를 예시로 하나 만들어준다. Remote 저장소를 Local로 가져와서 연동한 후, Eclipse를 실행해본다. 1. 연동하고 싶은 프로젝트에 마우스 오른쪽 버튼을 눌러 [Team - Share Project]를 누른다. 2. Create를 눌러 저장소를 선택해준다. 위에서 가져온 clone 위치를 지정한다. 3. Finish를 눌러 완료한다. 4. Commit 후 Push를 해보자. 프로젝트에 마우스 오른쪽 버튼 클릭 [Team - Commit] 그러면 아래의 화면이 보인..

프로그래밍 2021.08.14

[MyBatis] ORM 프레임워크 활용(1)

※ MyBatis(ORM Framework) - ORM: Object Relational Mapping - DB의 한 행과 객체를 연결해주는 프레임워크 * application.properties 내의 spring.datasource - Connection Pool(DB 연결 객체 Connection을 보관하는 장소) / 다수의 사용자가 접근하면, 다수의 Connection이 생성된다. - Connection을 연결하고 해제하는데 많은 시간이 걸리는데, 규모가 큰 기업의 경우 이런 시간을 줄이기 위해 Pool을 사용한다. - Connection을 미리 제작해놓고, 사용자가 사용할 때 제공. 미리 제작해놓은 장소가 Pool. (장점) Connection을 실시간으로 생성할 필요가 없다. 1. Java Ec..

프로그래밍 2021.07.06

[MySQL] With Recursive 문, 세션 변수 활용, Pagination

1. 기본 테이블 형태 select * from employee; 2. Employee 테이블에서 직원 번호, 직원 이름과 직원의 상사 번호와 상사 이름을 출력 * With 절을 사용하지 않은 쿼리 select b.empno, b.ename, b.mgr, a.ename from employee a right outer join employee b on a.empno = b.mgr; * With 절(임시 테이블) with t1 as (select empno, ename, mgr from employee), t2 as (select empno, ename from employee) select t1.empno, t1.ename, t1.mgr, t2.ename from t1 left outer join t2 ..

프로그래밍 2021.07.06

[웹] Java Spring Framework 활용2

※ Spring Framework 구성요소 * DispathcerServlet - Conroller의 대장(?), 서버로 들어오는 모든 요청을 처리해주는 첫번째 컨트롤러, 일종의 게이트웨이로 해석하고 있다. -> Controller와 상호작용 -> View와 상호작용 * Annotation (ex: @Conroller, @RestController, @RequestMapping...) - Spring Framework가 호출하면 자동으로 객체를 생성 - MVC 패턴에서 C(Controller)를 맡고 있고, 모델과 뷰를 연결하는 역할을 수행 - Class: @Controller, @RestController - Method: @RequestMapping (예) @Controller public class..

프로그래밍 2021.06.28

[웹] Java Spring Framework 활용

※ Eclipse Spring 설치 및 시작 * 메뉴에서 [Help]-[Eclipse Marketplace]-'STS'검색-Spring Tools 4 설치 * 프로젝트 생성 - Name은 프로젝트명 - 사용하는 자바 버전에 맞춰 Java Version을 변경하고 - Packaging을 War로 변경했다. - Group은 패키지명을 뜻한다. - pom.xml: 프로젝트에 포함된 라이브러리를 알 수 있음 - Maven: 프로젝트 관리 오픈소스 ※ 추가 설정 및 테스트 1) src/main/webapp 안에 WEB-INF 폴더, 하위에 jsp 폴더를 생성(View Component) 2) jsp 폴더 내에 Index.jsp 파일 생성 3) application.properties 안에 코드 삽입 spring...

프로그래밍 2021.06.25

[웹] JSP 예제(MySQL과 연동, 웹 브라우저 출력)(3)

※ 개요 요구사항 6) AJAX 기능을 이용하여 Add 기능 수정 요구사항 7) AJAX 기능을 이용하여 Update 기능 수정 요구사항 6) AJAX 기능을 이용하여 Add 기능 수정 AJAX 기능을 이용해, 페이지를 불러오지 않고 알림창만 생기게 한 뒤, 바로 결과를 출력하게 수정 [이전 과정에서 Add를 수행할 경우] 1. Button의 type = "submit"을 사용해 MemSvc.java로 데이터(Request)를 전송한다. 2. 조건문을 통해 cmd에 맞는 Add를 수행한다. 3. 수행한 결과(path명, MemList.jsp 파일 경로)를 서블릿에게 알려준다. 4. 서블릿의 forward를 사용해 request와 response를 해당 Path로 전달한다. [변경할 과정] 1. Butto..

프로그래밍 2021.06.23