아무튼 개발
article thumbnail
반응형

 

 

PL/SQL은 주로 CMD창에서 다루었다.

 

프로시저 만들기

 

Declare로 시작한다면 이름없는 프로시저이며

CREATE OR REPLACE PROCEDURE는 데이터베이스에 저장되는 방법이다.

 

입력 시 오타 등의 수정사항이 발생한다면

'ED'를 검색하여 다시 수정할 수 있다.

 

SERVEROUTPUT을 입력해야 결과가 잘 출력이 된다.

 

이름없는 프로시저
DECLARE --이름없는 PROCEDURE
TYPE FIRSTTYPE IS RECORD
--(A VARCHAR2, B VARCHAR2, C NUMBER);
(A 사원.사원명%TYPE, B 사원.직급%TYPE, C 사원.급여%TYPE);

CUS FIRSTTYPE;

BEGIN
SELECT 사원명,직급,급여 INTO CUS FROM 사원 WHERE 사원번호=2001;

DBMS_OUTPUT.PUT_LINE(CUS.A||'  '||CUS.B||'  '||TO_CHAR(CUS.C));
END;

DECLARE로 만들었다.

TYPE옆에는 타입명을 기록하며 하나의 레코드를 담을 자료형이다.

 

3번째 줄에 ()는 밑의 내용과 동일하며 일일이 각각의 타입을 조사하기 보다는

A 테이블명.컬럼명%TYPE으로 적는 것이 훨씬 수월할 것이다.

 

SELECT조건을 통해 가져올 조건을 입력하며

BEGIN은 SELECT,INSERT,UPDATE,DELETE,COMMIT,ROLLBACK만 가능하다.

 

A,B,C는 모두 CUS에 담겨있어 마지막줄에 CUS.A와 같이 앞에 붙여준 것이다.

 

 

데이텅베이스 저장 프로시저

문제와 함께 확인해보겠다.

 

문제 : 직책을 입력받아 그 직책의 급여의 총액,평균월급,인원수를 찾으시오

 

CREATE OR REPLACE PROCEDURE SEARCHJIK 
(JIK IN VARCHAR2)  
IS
A NUMBER:=0;
B NUMBER(12,2):=0;
BEGIN

SELECT SUM(PAY),AVG(PAY),COUNT(*) INTO A,B,C
FROM COMPANY WHERE POSIT=JIK;

DBMS_OUTPUT.PUT_LINE('급여총액: '||A||'원');
DBMS_OUTPUT.PUT_LINE('평균월급: '||B||'원');
DBMS_OUTPUT.PUT_LINE('인원수: '||C||'원');
END SEARCHJIK;

 

직책은 외부에서 입력받는 것이므로 'IN'을 입력한다.

IN은 다른 곳에서 입력을 받을 수 있게 한다. 데이터타입은 VARCHAR2이다.

 

SELECT문에 입력한 SUM,AVG,COUNT는 순서대로 A,B,C에 들어간다.

 

:=은 초기화값을 지정해준다.

 

오라클에서 출력은 DBMS_OUTPUT.PUT_LINE이다.

_와 . 이 섞여있어서 주의하자!

 

 

 


수업시간에 아무리 봐도 오타와 빠트린 것이 없는데 자꾸 에러가 났다.

알.고.보.니

영어 O를 숫자 0으로 쓴 것이다...

 

한 20분 넘게 확인했던 것 같다ㅠㅠ

CMD창은 오타를 쉽게 확인할 수 있지 않기 때문에

입력 시 더욱 신경써서 입력해야겠다.

 

 

 

#국비45일차

 

 

 

 

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...