◈ 9일차 문제
1.고객정보를 입력받아 해당 고객이 지금까지 주문한 총 횟수 구하기
결과 : A001번 고객님의 총 주문횟수는 3번입니다.
▲CUSTOM 테이블
▲SALES 테이블
SCRIPT
SET SERVEROUTPUT ON
SET VERIFY OFF
ACCEPT ID PROMPT '검색할 아이디를 입력하세요:';
DECLARE
TYPE P_GOJUTOT IS RECORD
(A CUSTOM.USERID%TYPE,
B CUSTOM.USERNAME%TYPE,
C NUMBER(5));
CUS P_GOJUTOT;
BEGIN
SELECT A.USERID,USERNAME, NCOUNT INTO CUS
FROM CUSTOM A,(SELECT USERID, COUNT(*) NCOUNT FROM SALES GROUP BY USERID) B
WHERE A.USERID=B.USERID AND A.USERID='&ID';
DBMS_OUTPUT.PUT_LINE(CUS.B || '(' || CUS.A || ')고객님의 총 주문횟수는 ' || CUS.C || '번 입니다.');
END;
/
PROCEDURE
CREATE OR REPLACE PROCEDURE P_GOJUTOT
(V_GNO IN VARCHAR2)
IS
TOT NUMBER;
BEGIN
SELECT COUNT(*) INTO TOT FROM SALES
WHERE USERID=V_GNO;
DBMS_OUTPUT.PUT_LINE(V_GNO || '번 고객님의 총 주문횟수는 ' || TO_CHAR(TOT) || '번 입니다.');
END;
EXECUTE P_GOJUTOT('og6675');
2.직책을 입력받아 그 직책의 급여의 총액, 평균 월급, 인원수를 검색하기
결과
과장의 급여 총액 : XXXX
과장의 평균 월급 : XXXX
과장의 인원 수 : XX명
▲COMPANY 테이블
PROCEDURE
CREATE OR REPLACE PROCEDURE SEARCHJIK
(V_POSIT IN VARCHAR2)
IS
TOTPAY NUMBER;
AVGPAY NUMBER(10);
TOT NUMBER;
BEGIN
SELECT SUM(PAY), AVG(PAY), COUNT(*) INTO TOTPAY, AVGPAY, TOT
FROM COMPANY
WHERE POSIT=V_POSIT;
DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 급여 총액:' || TOTPAY || '원');
DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 평균 월급:' || AVGPAY || '원');
DBMS_OUTPUT.PUT_LINE(V_POSIT || '의 인원 수:' || TOT || '명');
END;
EXECUTE SEARCHJIK('과장');
'STUDY > ORACLE' 카테고리의 다른 글
Oracle 10일차(2)-문제 (0) | 2019.01.21 |
---|---|
Oracle 10일차(1)-DML PROCEDURE, 함수,반복문,예외처리 (0) | 2019.01.21 |
Oracle 9일차(2)-PL/SQL (0) | 2019.01.18 |
Oracle 9일차(1)-INDEX, SEQUENCE (0) | 2019.01.18 |
Oracle 8일차 (0) | 2019.01.16 |
댓글