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/๐Ÿ’ฝOracle

[PL/SQL] ์ปค์„œ(Cursor)

2022. 8. 18. 08:56

์ปค์„œ(Cursor)

ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ž‘์—… ์˜์—ญ์—์„œ SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ณผ์ •์— ์ƒ๊ธด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

์ปค์„œ์˜ ์ข…๋ฅ˜ 

แ†ž์•”์‹œ์  ์ปค์„œ : ๋ชจ๋“  DML๊ณผ PL/SQL SELECT๋ฌธ์— ๋Œ€ํ•ด ์„ ์–ธ

แ†ž๋ช…์‹œ์  ์ปค์„œ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ์„ ์–ธ๋˜๋ฉฐ ์ด๋ฆ„์ด ์žˆ๋Š” ์ปค์„œ์ด๋‹ค

 

์•”์‹œ์  ์ปค์„œ

์˜ค๋ผํด์ด๋‚˜ PL/SQL์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” SQL๋ฌธ์žฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณณ์— ๋Œ€ํ•œ ์ต๋ช…์˜ ์ฃผ์†Œ

์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  SQL๋ฌธ์žฅ์€ ์•”์‹œ์ ์ธ ์ปค์„œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ปค์„œ ์†์„ฑ์„ ์‚ฌ์šฉ

SQL ๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„ ์ž๋™์œผ๋กœ OPEN๊ณผ CLOSE

 

์•”์‹œ์  ์ปค์„œ ์†์„ฑ

- SQL%ROWCOUNT : ํ•ด๋‹น SQL ๋ฌธ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ–‰์˜ ์ˆ˜

-SQL%FOUND:ํ•ด๋‹นSQL์˜ํ–ฅ์„๋ฐ›๋Š”ํ–‰์˜์ˆ˜๊ฐ€1๊ฐœ์ด์ƒ์ผ๊ฒฝ์šฐTRUE
- SQL%NOTFOUND :
ํ•ด๋‹น SQL ๋ฌธ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ–‰์˜ ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ TRUE

- SQL%ISOPEN : ํ•ญ์ƒ FALSE, ์•”์‹œ์  ์ปค์„œ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€ ๊ฒ€์ƒ‰

 

 

๋ช…์‹œ์  ์ปค์„œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ์„ ์–ธ๋˜๋ฉฐ ์ด๋ฆ„์ด ์žˆ๋Š” ์ปค์„œ๋กœ ์—ฌ๋Ÿฌ row

์ž‘์—… ์ˆœ์„œ 

CURSOR ์„ ์–ธ → ์ปค์„œ OPEN → FETCH → ์ปค์„œ CLOSE

 

๋ช…์‹œ์  ์ปค์„œ ์†์„ฑ

- cursor_name %ROWCOUNT : ํ˜„์žฌ๊นŒ์ง€ ๋ฐ˜ํ™˜๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํ–‰์˜ ์ˆ˜
- cursor_name %FOUND : FETCHํ•œ ์ปค์„œ๊ฐ€ ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด TRUE
- cursor_name %NOTFOUND : FETCH
ํ•œ ์ปค์„œ๊ฐ€ ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด TRUE

- cursor_name %ISOPEN : ์ปค์„œ๊ฐ€ OPEN ๋˜์–ด ์žˆ์œผ๋ฉด TRUE

 

 

Cursor ์„ ์–ธ

๊ฒ€์ƒ‰ํ•  ์ฟผ๋ฆฌ๋ฅผ ์„ ์–ธ

CURSOR cursor_name IS select_statement;

 

์ปค์„œ OPEN

แ†žOPEN์€ ์ปค์„œ์—์„œ ์„ ์–ธ๋œ SELECT๋ฌธ์˜ ์‹คํ–‰์„ ์˜๋ฏธ

แ†ž๋ฐ์ดํ„ฐํ–‰์„ ์ถ”์ถœํ•˜์ง€ ๋ชปํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒโŒ

OPEN cursor_name ;

 

FETCH
แ†žFETCH๋Š” ํ˜„์žฌ ๋ฐ์ดํ„ฐ ํ–‰์„ OUTPUT๋ณ€์ˆ˜์— ๋ฐ˜ํ™˜ ํ•œ๋‹ค.
แ†ž์ปค์„œ์˜ SELECT๋ฌธ ์ปฌ๋Ÿผ์˜ ์ˆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ OUTPUT๋ณ€์ˆ˜์˜ ์ˆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•จ 

แ†ž์ปค์„œ๋Š” ํ•œ ํ–‰ ์”ฉ ๋ฐ์ดํ„ฐ๋ฅผ FETCH 

FETCH cursor_name INTO variable1, variable2;

FETCH cursor_name INTO record_variable; - ์ปค์„œ CLOSE

 

์ปค์„œ CLOSE

แ†žOPEN๋œ ์ปค์„œ๋Š” ์‚ฌ์šฉ ์™„๋ฃŒ ํ›„ ๋ฐ˜๋“œ์‹œ CLOSE

แ†ž์„ ์–ธ ๋œ SELECT๋ฌธ์˜ ์„ ์–ธ์„ ํ•ด์ œ ํ•œ๋‹ค.
แ†ž์ปค์„œ๊ฐ€ CLOSE๋œ ์ƒํƒœ์—์„œ๋Š” FETCH๋ฅผ ํ•  ์ˆ˜ ์—†์Œ 

CLOSE cursor_name;

 

๋ช…์‹œ์  ์ปค์„œ ์‚ฌ์šฉ ์˜ˆ์‹œ 

DECLARE
    vName emp.name%TYPE;
    vSal emp.sal%TYPE;
    
    --1) ์ปค์„œ ์„ ์–ธ 
    CURSOR cur_emp IS SELECT name, sal FROM emp;
    
    BEGIN
    -- 2) ์ปค์„œ ์˜คํ”ˆ 
        OPEN cur_emp;
    
        LOOP 
            --3) FETCH
            FETCH cur_emp INTO vName, vSal;
            EXIT WHEN cur_emp%NOTFOUND;
        
            DBMS_OUTPUT.PUT_LINE(vName || '  '|| vSal);
        END LOOP;
        
        --4) ์ปค์„œ CLOSE
        CLOSE cur_emp;
    END;

'๐Ÿ’ปProgramming > ๐Ÿ’ฝOracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[PL/SQL] ์ธ๋ฑ์Šค  (0) 2022.08.18
[PL/SQL] ์˜ˆ์™ธ(Exception) ์ฒ˜๋ฆฌ  (0) 2022.08.18
[PL/SQL] ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜  (0) 2022.08.18
[PL/SQL] ํ”„๋กœ์‹œ์ €  (0) 2022.08.17
[PL/SQL]  (0) 2022.08.17
    '๐Ÿ’ปProgramming/๐Ÿ’ฝOracle' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [PL/SQL] ์ธ๋ฑ์Šค
    • [PL/SQL] ์˜ˆ์™ธ(Exception) ์ฒ˜๋ฆฌ
    • [PL/SQL] ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜
    • [PL/SQL] ํ”„๋กœ์‹œ์ €
    yeony._.
    yeony._.
    ํž˜ ์„ธ์ง€๋Š” ์•Œ์•ฝ๐Ÿ’Š๐Ÿ’Š๐Ÿ’Š

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