CURSOR 사용할 커서의 이름 [ (매개변수1, 매개변수2, ... ) ]
IS
SELECT ..... SQL 문장
매개변수의 역할 : SELECT 명령에서 사용할 값들을 저장( 주로 WHERE 절에서 사용할 값들)
SELECT .... SQL 문장 : 실행되어 CURSOR에 결과를 안겨줄 SQL 명령
LOOP
FETCH 커서이름 INTO 변수(들);
EXIT WHEN 커서이름%NOTFOUND;
-- SELECT에 의해 얻어진 레코드가 없을 때까지 반복 계속
END LOOP;
FETCH 커서이름 INTO 변수; 커서에 담긴 데이터들 중 한 줄씩 꺼내서 변수(들)에 넣는 동작
EXIT WHEN 커서이름%NOTFOUND; 꺼냈는데 데이터가 없으면 종료
LOOP 안에서 필요에 맞는 처리를 데이터가 없을 때까지 반복
기존의 for문
FOR 인덱스변수 IN [REVERSE] 처음값.. 끝값
LOOP
실행문
END LOOP;
커서와 함께 사용하는 FOR 문
( OPEN 커서이름(전달인수) <- 생략 )
FOR 레코드 변수 IN 커서이름(전달인수1, 전달인수2)
LOOP
실행문
END LOOP;
OPEN과 LOOP가 합쳐진 예
FOR 레코드변수 IN 커서이름(전달인수1, 전달인수2...)
: OPEN 으로 실행(호출)하던 동작이 FOR문의 IN 다음으로 이동
실행결과는 하나씩 (1행, 1레코드) 레코드 변수에 저장되어 반복실행
자동으로 실행결과의 개수만큼 반복실행
커서 변수
커서변수의 선언
TYPE dep_curtype1 IS REF CORSOR RETURN emp%ROWTYPE;
TYPE dep_curtype2 IS REF CORSOR;
cursor1과 cursor2 변수에는 select 명령을 담아서 커서를 완성할 수 있다.
또한 커서내용(select문)이 고정적이지 않고 바꿀 수 있다.
다만 cursor1은 강한 커서 타입이므로 정의 되어 있는 대로
(RETURN departments%ROWTYPE)
레코드 전체의 결과를 얻는 select만 저장할 수 있다.
커서변수를 만들어서 필요할때마다 커서 내용을 저장하고 호출해서 그 결과를 사용하려고 변수를 만든다.
dep_curtype3 SYS_REFCURSOR;
-- 시스템에서 제공해주는 커서 타입
servers 탭 에서 링크 클릭(new server) → 아파치 폴더아래의 tomcat9.0서버 선택 → Tomcat instpllation directory: 아래 입력 란에 톰캣설치된 폴더 넣기(옆에 Browse.. 버튼클릭하고 폴더 찾아서 선택)
C:\Program Files\Apache Software Foundation\Tomcat 9.0
→ 톰캣서버에 프로젝트 파일 add 꼭 해야함!!! → finish 클릭
servers 탭에서 Tomcat에 연결할 때 더블클릭하고 설정할 것이 있음!!!
tomcat admin port 가 비어있는데 9005를 넣어준다.
servers탭에서 tomcat 서버이름을 더블클릭하면 설정창이 나옴
window탭 > properties > general - workspace - text file encoding - other클릭하고 MS949입력
브라우저 크롬 으로 수정
: window탭 > web browser > chrome클릭
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
문서 가장 위에 쓰여서 jsp를 쓰겠다는 표시
위 코드줄을 한 줄로 이어쓸 때 띄어쓰기 없으면 에러
JSP는 JAVA SERVER PAGE의 약자로,
웹페이지 내부에 프로그래밍 적인 요소를 추가하거나,
서버에서 계산되고 실행된 결과를 웹페이지에서 표시하고자 할 때 사용한다.
쉽게 얘기하면, 웹페이지 HTML5 중간 중간에 자바 프로그래밍 코드를 좀 같이 쓰겠습니다. 라는 뜻과 비슷하다.
사용 예는 아래와 같다.
(날짜 변수 d의 선언과 객체 초기과 동작)
<% java.util.Date d = new java.util.Date(); %>
HTML로 페이지를 구성하던 중, JSP에 의한 컨텐츠가 중간에 나와야 한다면 필요한 곳에 jsp명령을 쓴다.
현재 jsp파일 안에 html 문법 사이로 jsp문법이 껴들어 코딩될 때는 <% %>를 사용한다.
<!-- HTML5 주석 -->
<%-- 주석내용 중에 <% %>이 섞여있을 때의 주석 --%>
JSP는 JAVA에서 사용하던 거의 모든 문법이 똑같이 사용된다.
jsp 명령들 사이에 html같은 요소들이 껴들어야 한다면 jsp영역을 끝내고 해당 내용을 기술한 후 다시 jsp영역을 시작한다.
한 페이지 안에서 jsp 명령은 중간에 영역이 끝나고 다시 시작해도 한 프로그램처럼 이어진다.
Action_to.jsp : 데이터를 받는 페이지
get & post
Action.jsp에서 출발한 폼데이터들은 주소에 섞여서 action에 써놓은 페이지에 도착할 것 같지만, 주소는 서버에서 최종 목적지로 사용한 주소일뿐 입력란에 입력된 데이터들은 모두 서버에 저장된다. name으로 구분된 vlaue값들 모두 ......
그리고 요청주소에 포함되어 표시될 뿐 주소에 있는 값들을 앞으로 이용하는 것은 아니고 서버에 있는 데이터를 불러서 이용한다.
request.getParameter()
를 이용해서 필요한 데이터를 가져온다.
getParameter로 받는 모든 데이터는 String 데이터로 받을 수 있다.
만약 위 항목 중 입력란이 비어있거나 name값이 없는 게 존재한다면 String 변수는 null이 된다.
name에 오타가 있어서 받지 못한 것 또한 null이 된다.
Action.jsp 에서 submit버튼을 클릭하면 form안의 input태그의 값들이 보내지고 a태그의 내용은 보내지지 않는다.
a태그의 url에 ?useritem=ABCDEFG를 붙여 보낼 데이터를 지정할 수 있는데 이 데이터는 a태그를 클릭해서 Action_to에 넘어갔을 때만 보낼 수 있다(이때는 form의 데이터는 보내지 못함)
checkbox처럼 여러개의 값을 선택할 수 있을 때는 어떻게 받을 것인가
checkbox.jsp : 보내는 쪽
받는 쪽
여러개를 받을 때는 배열로 받고 for문을 쓸 수 있다.
jsp중간에 html태그를 써야 할 때는 jsp 영역을 닫고 태그를 쓰고 다시 jsp영역을 열고 jsp를 작성해야 한다.
보내는 쪽
: 하나만 선택할 수 있는 select + 여러개를 선택할 수있는 select
한 form 안에 들어 있는 페이지
받는 쪽
: 첫 번째 select의 값을 받을 변수는 String으로
두 번째 select의 값을 받을 변수는 String[ ]로 받는다.