yeony._.
๐Ÿข์ฝฉ๋ถ€๐Ÿข
yeony._.
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (99)
    • ๐Ÿ’ปProgramming (91)
      • โ˜•๏ธJava (19)
      • ๐Ÿ’ฝOracle (21)
      • ๐Ÿ‘ฉ‍๐ŸŽจHTML&CSS (12)
      • ๐ŸŽจ ์‹ค์Šต (4)
      • ๐Ÿƒ‍โ™€๏ธJavaScript (25)
      • JSP (8)
      • ๐ŸƒSpring (0)
      • ๐Ÿฅงpython (0)
      • API (0)
      • ๐Ÿ˜ˆGit (1)
    • ๐ŸคซPrivate (0)
      • -- (0)
      • + (0)
      • S (0)
      • P (0)
      • B (0)
    • ๐Ÿ˜ŽProject (4)
      • ๐Ÿ—“๏ธwbs ํ”„๋กœ์ ํŠธ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • HTML #CSS #HTML์ด๋ฏธ์ง€ #HTML์ด๋ฏธ์ง€์—๊ธ€์”จ #HTML์ด๋ฏธ์ง€์—์ด๋ฏธ์ง€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
yeony._.

๐Ÿข์ฝฉ๋ถ€๐Ÿข

๐Ÿ’ปProgramming/โ˜•๏ธJava

CallableStatement ํ™œ์šฉ(1) - ์˜ค๋ผํด ํ”„๋กœ์‹œ์ €

2022. 8. 23. 22:36

1. ํ”„๋กœ์‹œ์ € ์ž‘์„ฑ

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •, ํ•™๋ฒˆ ๊ฒ€์ƒ‰, ์ด๋ฆ„ ๊ฒ€์ƒ‰, ์ „์ฒด ๋ฆฌ์ŠคํŠธ, ํ‰๊ท  ๊ณ„์‚ฐ

ํ”„๋กœ์‹œ์ € ์ž‘์„ฑ ์‹œ ์œ ์˜์‚ฌํ•ญ developer์—์„œ๋Š” ์ž๋™ ์ปค๋ฐ‹์ด ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ COMMIT ํ•ด์•ผํ•จ 

 

%TYPE ํผ์„ผํŠธํƒ€์ž…

ํŠน์ • ํ…Œ์ด๋ธ”์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์˜๋ฏธ

pHak score.hak%TYPE

pHak์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์˜ ํƒ€์ž…์„ score ํ…Œ์ด๋ธ”์˜ hak ์ปฌ๋Ÿผ์˜ ํƒ€์ž…์„ ๊ฐ€์ ธ์™€์„œ ์“ฐ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

 

1. SCORE ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE insertScore 
(
    pHak IN score.hak%TYPE,
    pName IN score.name%TYPE,
    pBirth IN score.birth%TYPE, 
    pKor IN score.kor%TYPE,
    pEng IN score.eng%TYPE,
    pMat IN score.mat%TYPE
)
IS
BEGIN
    INSERT INTO score(hak, name, birth, kor, eng, mat)
        VALUES (pHak, pName, pBirth, pKor, pEng, pMat);
    COMMIT;
END;
/

 

2. SCORE ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE updateScore 
(
    pName IN score.name%TYPE,
    pBirth IN score.birth%TYPE, 
    pKor IN score.kor%TYPE,
    pEng IN score.eng%TYPE,
    pMat IN score.mat%TYPE,
    pHak IN score.hak%TYPE
)
IS
BEGIN
    UPDATE score SET name = pName, birth=pBirth,kor=pKor, eng =pEng, mat =pMat
    WHERE hak = pHak;
    IF SQL%NOTFOUND THEN
        RAISE_APPLICATION_ERROR(-20100, '๋“ฑ๋ก๋œ ์ž๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค');
    END IF;
    COMMIT;
END;
/

์‚ฌ์šฉ์ž ์—๋Ÿฌ์ฝ”๋“œ ํ•จ์ˆ˜ 

RAISE_APPLICATION_ERROR( [์—๋Ÿฌ์ฝ”๋“œ], [์—๋Ÿฌ๋ฉ”์‹œ์ง€] )
์—๋Ÿฌ์ฝ”๋“œ : -20000 ~ -20999 ์‚ฌ์ด์˜ ์ฝ”๋“œ

์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ํ•จ์ˆ˜์—์„œ ์ •์˜ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ

 

3. SCORE ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE deleteScore
(
    pHak VARCHAR2
)
IS
BEGIN
    DELETE FROM score WHERE hak = pHak;
    IF SQL%NOTFOUND THEN
        RAISE_APPLICATION_ERROR(-20100, '๋“ฑ๋ก๋œ ์ž๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค');
    END IF;
    COMMIT;
END;
/

 

4. SCORE ํ…Œ์ด๋ธ”์—์„œ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE readScore 
(
    pResult OUT SYS_REFCURSOR,
    pHak IN VARCHAR2
)
IS
BEGIN
    OPEN pResult FOR
        SELECT hak, name, TO_CHAR(birth, 'YYYY-MM-DD') birth, kor, eng, mat,
            kor+eng+mat tot, (kor+eng+mat)/3 ave
        FROM score
        WHERE hak = pHak;
END;
/

์ž๋ฐ”์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•™๋ฒˆ์„ ์ž…๋ ฅ ๋ฐ›์•„์„œ ์˜ค๋ผํด์— ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•ด์„œ IN-OUT ์‚ฌ์šฉ

pResults๋Š” ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‹ด๋Š” ๋ณ€์ˆ˜. ์ž๋ฐ”๋กœ ๋„˜๊ธธ ๊ฑฐ๋‹ˆ๊นŒ OUT

pHak ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ ์˜ค๋ผํด์—์„œ ์ฟผ๋ฆฌ๋ฌธ์— ์จ์•ผ ํ•˜๋ฏ€๋กœ IN

 

 

5. SCORE ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE searchNameScore
(
    pResult OUT SYS_REFCURSOR,
    pName IN VARCHAR2
)
IS
BEGIN
    OPEN pResult FOR
        SELECT hak, name, TO_CHAR(birth, 'YYYY-MM-DD') birth, kor, eng, mat,
            kor+eng+mat tot, (kor+eng+mat)/3 ave
        FROM score
        WHERE INSTR(name, pName)>=1;
END;
/

ํ•™๋ฒˆ ๊ฒ€์ƒ‰๊ณผ ๋™์ผ 

 

6. SCORE ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE listScore
(
    pResult OUT SYS_REFCURSOR
    
)
IS
BEGIN
    OPEN pResult FOR
        SELECT hak, name, TO_CHAR(birth, 'YYYY-MM-DD') birth, kor, eng, mat,
            kor + eng+ mat tot, (kor+eng+mat)/3 ave,
            RANK() OVER(ORDER BY (kor+eng+ mat)DESC) rank
            FROM score;
END;

 

7. SCORE ํ…Œ์ด๋ธ”์—์„œ ๊ตญ, ์˜, ์ˆ˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ์‹œ์ € 

CREATE OR REPLACE PROCEDURE averagerScore
(
    pKor OUT NUMBER,
    pEng OUT NUMBER,
    pMat OUT NUMBER
    
)
IS
BEGIN
    SELECT NVL(AVG(kor), 0), NVL(AVG(kor), 0), NVL(AVG(mat), 0)
        INTO pKor, pEng, pMat
    FROM score;
END;
/

์ž๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋ฏ€๋กœ OUT ์ด์šฉ 

 

'๐Ÿ’ปProgramming > โ˜•๏ธJava' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Transaction(ํŠธ๋žœ์žญ์…˜)  (0) 2022.08.24
CallableStatement  (0) 2022.08.23
PreparedStatement ํ™œ์šฉ  (0) 2022.08.22
PreparedStatement  (0) 2022.08.22
Statement  (0) 2022.08.19
    '๐Ÿ’ปProgramming/โ˜•๏ธJava' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • Transaction(ํŠธ๋žœ์žญ์…˜)
    • CallableStatement
    • PreparedStatement ํ™œ์šฉ
    • PreparedStatement
    yeony._.
    yeony._.
    ํž˜ ์„ธ์ง€๋Š” ์•Œ์•ฝ๐Ÿ’Š๐Ÿ’Š๐Ÿ’Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”