๐Ÿ’ปProgramming

    [PL/SQL] ์˜ˆ์™ธ(Exception) ์ฒ˜๋ฆฌ

    [PL/SQL] ์˜ˆ์™ธ(Exception) ์ฒ˜๋ฆฌ

    PL/SQL์—์„œ๋„ ์ž๋ฐ”์™€ ๊ฐ™์ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ๋ž€? PL/SQL ๋ธ”๋ก์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์— ๋ฐœ์ƒ๋˜๋Š” ์—๋Ÿฌ๋ฅผ ์˜ˆ์™ธ๋ผ ํ•จ ์—๋Ÿฌ ์ข…๋ฅ˜ แ†ž์ปดํŒŒ์ผ ์—๋Ÿฌ : PL/SQL ๋ธ”๋ก์ด ํŒŒ์‹ฑ(Parsing)๋  ๋•Œ ์‚ฌ์šฉ์ž ์˜คํƒ€, ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒ๋˜๋Š” ์—๋Ÿฌ แ†ž๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ : PL/SQL ๋ธ”๋ก์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋ฅผ Exception ๋ฏธ๋ฆฌ ์ •์˜๋œ ์˜ˆ์™ธ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์˜ˆ์™ธ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ๋กœ์ง์„ ์ž‘์„ฑ DECLARE -- ์˜ˆ์™ธ์„ ์–ธ -- ์˜ˆ์™ธ ์ด๋ฆ„ EXCEPTION; BEGIN -- ์˜ˆ์™ธ ๋ฐœ์ƒ -- RAISE ์˜ˆ์™ธ ์ด๋ฆ„; EXCEPTION WHEN ์˜ˆ์™ธ1(์‚ฌ์ „ ์ •์˜๋œ ์˜ค๋ฅ˜ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์˜ค๋ฅ˜) THEN STATEMENT1 ... WHEN ์˜ˆ์™ธ2(์‚ฌ์ „ ์ •์˜๋œ ์˜ค..

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

    ์ปค์„œ(Cursor) ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ž‘์—… ์˜์—ญ์—์„œ SQL๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ณผ์ •์— ์ƒ๊ธด ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ์ปค์„œ์˜ ์ข…๋ฅ˜ แ†ž์•”์‹œ์  ์ปค์„œ : ๋ชจ๋“  DML๊ณผ PL/SQL SELECT๋ฌธ์— ๋Œ€ํ•ด ์„ ์–ธ แ†ž๋ช…์‹œ์  ์ปค์„œ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ์„ ์–ธ๋˜๋ฉฐ ์ด๋ฆ„์ด ์žˆ๋Š” ์ปค์„œ์ด๋‹ค ์•”์‹œ์  ์ปค์„œ ์˜ค๋ผํด์ด๋‚˜ PL/SQL์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” SQL๋ฌธ์žฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณณ์— ๋Œ€ํ•œ ์ต๋ช…์˜ ์ฃผ์†Œ ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  SQL๋ฌธ์žฅ์€ ์•”์‹œ์ ์ธ ์ปค์„œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ปค์„œ ์†์„ฑ์„ ์‚ฌ์šฉ SQL ๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„ ์ž๋™์œผ๋กœ OPEN๊ณผ CLOSE ์•”์‹œ์  ์ปค์„œ ์†์„ฑ - SQL%ROWCOUNT : ํ•ด๋‹น SQL ๋ฌธ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ–‰์˜ ์ˆ˜ -SQL%FOUND:ํ•ด๋‹นSQL์˜ํ–ฅ์„๋ฐ›๋Š”ํ–‰์˜์ˆ˜๊ฐ€1๊ฐœ์ด์ƒ์ผ๊ฒฝ์šฐTRUE - SQ..

    [PL/SQL] ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

    ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ํ•จ์ˆ˜ ๋‚ด์žฅ ํ•จ์ˆ˜(๋นŒํŠธ์ธ ํ•จ์ˆ˜)์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ์—์„œ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ EXECUTE ๋ฌธ ์„ ํ†ตํ•ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•จ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋Š” ์ค‘๋ณต ์ •์˜๊ฐ€ ๊ฐ€๋Šฅ ํ”„๋กœ์‹œ์ €๋Š” ํŠน์ •ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์ •๋ณด ํ™•์ธ SELECT * FROM user_procedures WHERE OBJECT_TYPE = ‘FUNCTION'; โœ”๏ธ USER_PROCEDURES ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜์˜ ๋ชฉ๋ก์„ ํ™•์ธ โœ”๏ธ USER_SOURCE ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜์˜ ์†Œ์Šค๋ฅผ ํ™•์ธ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ CREATE [ OR REPLACE ] FUNCTION function_name [ ( parameter ๋ฐ์ดํ„ฐํƒ€์ž… [ ,parameter ๋ฐ์ดํ„ฐํƒ€์ž… ... ] ..

    [PL/SQL] ํ”„๋กœ์‹œ์ €

    ํ”„๋กœ์‹œ์ € ์ž์ฃผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด ํ๋ฆ„(SQL)์„ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ ํŠน์ •ํ•œ ๋กœ์ง ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜โŒโŒโŒ ์ ˆ๋Œ€์ ์œผ๋กœ ์ปค๋ฐ‹์ด ํ•„์š”ํ•จ ํ”„๋กœ์‹œ์ € ํŠน์ง• ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•ด๋„ ์—ฐ๊ด€๋œ ํ”„๋กœ์‹œ์ € ์‚ญ์ œโŒ ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋œ ์ƒํƒœ์—์„œ ์—ฐ๊ด€๋œ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ ํŒŒ๋ผ๋ฏธํ„ฐ IN ํ”„๋กœ์‹œ์ €์—๊ฒŒ ๊ฐ’์„ ๋„˜๊ฒจ์ค„ ๋•Œ ์‚ฌ์šฉํ•จ OUT ์ž๋ฐ”์—๋Š” ์—†๋Š” ๊ฐœ๋…์œผ๋กœ ํ”„๋กœ์‹œ์ €๊ฐ€ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋˜๋Œ๋ ค ๋ฐ›์„ ๋•Œ INOUT IN๊ณผ OUT์„ ๊ฒฐํ•ฉํ•œ ๊ฐœ๋… ํ”„๋กœ์‹œ์ € ์ƒ์„ฑ CREATE OR REPLACE PROCEDURE ํ”„๋กœ์‹œ์ €์ด๋ฆ„ IS --ํ”„๋กœ์‹œ์ € ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜ ๋ณ€์ˆ˜์ด๋ฆ„ ๋ฐ์ดํ„ฐํƒ€์ž…; ๋ณ€์ˆ˜์ด๋ฆ„ ๋ฐ์ดํ„ฐํƒ€์ž…; BEGIN ๊ธฐ๋Šฅ ๊ตฌํ˜„,์ฒ˜๋ฆฌ ์ž‘์„ฑ; [EXCEPTION] END [ํ”„๋กœ์‹œ์ € ์ด๋ฆ„]; โœ”๏ธ ..