2020년/정처기
[2020 정보처리기사 실기]Section 08.SQL응용(사용자 정의 함수, 커서)
위지원
2020. 4. 29. 22:32
이전글
2020/04/29 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기]Section 08.SQl응용(프로시저, 트리거)
사용자 정의 함수
- select를 통한 조회만 할 수 있음 ,DML문의 호출에 의해 실행
- return으로 값을 반환하므로 출력 파라미터가 존재하지 않음
DECLARE
BEGIN
[CONTROL]
[SQL]
[EXCEPTION]
[RETURN]
END;
1. 사용자 정의 함수 생성 ; BODY에는 적어도 하나의 SQL문이 존재해야함
CREATE [OR REPLACE] FUNCTION 사용자 정의 함수명(파라미터)
[지역변수]
BEGIN
사용자 정의 함수 BODY;
RETURN 반환값;
END;
CREATE FUNCTION Get_S_성별(i_성별코드 IN INT)
RETURN VARCHAR2
IS
BEGIN
IF i_성별코드 =1 THEN
RETURN '남자';
ELSE
RETURN '여자';
END IF;
END;
2. 사용자 정의 함수 실행
SELECT 사용자 정의 함수명 FROM 테이블명;
INSERT INTO 테이블명(속성명) VALUES (사용자 정의 함수명);
DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명;
UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;
#EXAMPLE
/*Table 사원(이름, 성별코드) */
SELECT 이름, Get_S_성별(성별코드) FROM 사원;
3. 사용자 정의 함수 제거
DROP FUNCTION 사용자 정의 함수명;
#EXAMPLE
DROP FUNCTION Get_S_성별;
커서(Cursor)
1.커서
쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가르키는 포인터
- 묵시적 커서 : 커서 수행 단계가 자동으로 수행, 쿼리문의 정상 수행여부를 확인하기 위함
- 커서의 속성
- SQL%FOUND : true/false
- SQL%NOTFOUND : true/false
- SQL%ROWCOUNT : row개수
- SQL%ISOPEN : true/false 묵시적 커서는 자동이라 항상 false
- 커서의 속성
BEGIN
UPDATE SCROE SET COND=25 WHERE DEPT = 'PR';
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
END;
출력 결과 => 3
- 명시적 커서 : 사용자가 직접 구현, 쿼리문의 결과를 저장하여 사용해 동일한 쿼리가 반복수행 되어 리소스 낭비를 방지함
DECLARE
p_name employee.name%TYPE /*name속성의 자료형과 동일한*/
CURSOR cur_name(ff Int)
IS
SELECT name FROM employee where id >= tt;
BEGIN
OPEN cur_name(20);
LOOP
FETCH cur_name INTO p_name; /*커서 결과를 p_name에 뻈찌*/
EXIT WHEN cur_name%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(p_name);
END LOOP;
CLOSE cur_name;
END;
즐거운 SQL이 끝났습니다.. 다음시간엔 또,,,개발,,,환ㄱ,,경,,구,,축,,,으로 찾아뵙겠읍니다,,,,아,, 하기싫다,,, 시험,,까지,,,20일가량,,남았네요,,젭알,,한번에 붙허라,,
다음글
2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처기기사 실기] Section 09. 소프트웨어 개발 보안 구축 #1