1. Dim : 변수를 선언

2. Set : 개체를 선언

Handphone 개체의 사용 방법

1. Dim myPhone
2. Set myPhone = Server.CreateObject ("Telephone.Handphone")
3. myPhone.color = "white"
4. myPhone.number = "011-9971-88XX"
5. myPhone.call ("02-584-88XX")
6. myPhone.hangup ( )
7. Set myPhone = Nothing

 

1. myPhone이라는 변수 선언

2. Server.CreateObject 라는 메소드를 사용하여 Handphone 개체의 인스턴스를 만들어서 myPhone 이라는 변수에 저장

3, 4. 속성에 값을 할당하는 구문

5, 6. 메소드를 실행하는 구문

7. Set myPhone = Nothing 이라는 구문을 사용하여 개체의 인스턴스인 'myPhone'을 메모리에서 해제

 


 

3. IF ~ THEN : 만약 ~라면 (조건이 적은 경우)

IF intNumber = 1 THEN
   Response.Write "intNumber에 들어있는 수는 1입니다."
ELSEIF intNumber = 2 THEN
   Response.Write "intNumber에 들어있는 수는 2입니다."
ELSEIF intNumber = 3 THEN
   Response.Write "intNumber에 들어있는 수는 3입니다."
ELSE
   Response.Write "intNumber에 들어있는 수는 1, 2, 3이 아닌 다른 숫자입니다."
END IF

 

Response.Write : 현재 화면에 문자열을 출력하라는 함수

 


 

4. SELECT CASE : 만약 ~라면 (조건이 많은 경우)

SELECT CASE intNumber
CASE 1
   Response.Write "intNumber에 들어있는 수는 1입니다."
CASE 2
   Response.Write "intNumber에 들어있는 수는 2입니다."
CASE 3
   Response.Write "intNumber에 들어있는 수는 3입니다."
CASE 4
   Response.Write "intNumber에 들어있는 수는 4입니다."
CASE 5
   Response.Write "intNumber에 들어있는 수는 5입니다."
CASE 6
   Response.Write "intNumber에 들어있는 수는 6입니다."
CASE 7, 8, 9
   Response.Write "intNumber에 들어있는 수는 7, 8, 9 중 하나 입니다."
CASE 10
   Response.Write "intNumber에 들어있는 수는 10입니다."
CASE ELSE
   Response.Write "intNumber에 들어있는 수는 1부터 10 사이의 정수가 아닙니다."
END  SELECT

 


 

5. FOR ~ NEXT : 순환하면서 실행 (반복 횟수를 정확하게 알고 있을 때)

1부터 1000까지의 숫자를 화면에 출력하라는 명령어

DIM intLoop
FOR intLoop = 1 TO 1000 STEP 1
      Response.writer intLoop & "<BR>"
NEXT

[FOR~NEXT 구문의 형식]

FOR 
시작 TO STEP 증가
    반복되어 실행될 구문
NEXT

 


 

6. DO WHILE : 순환하면서 실행 (반복 횟수를 정확하게 알 수 없을 때)

1부터 1000까지의 숫자를 화면에 출력하라는 명령어

DIM intLoop
intLoop = 1 
DO WHILE
intLoop <= 1000                         // intLoop 변수에 담긴 숫자가 1000보다 같거나 작은 동안에는 계속 실행해라.
      Response.writer intLoop & "<BR>"
      intLoop = intLoop + 1                             // 대입 연산자
LOOP

[FOR~NEXT 구문의 형식]

FOR  
시작 TO  STEP 증가
    반복되어 실행될 구문
NEXT

 

 

출처 taeyo.net/lecture/Dukyoung/DYsASP06.asp

'프로그램 > ASP' 카테고리의 다른 글

[ASP] BOF와 EOF의 의미  (0) 2021.03.09
[ASP] 한글 깨짐 해결 방법  (0) 2021.03.08
[ASP] 기초 문법 실습하기  (0) 2021.03.03
ASP 란 무엇인가?  (0) 2021.03.03
ASP와 ASP.NET의 차이점  (0) 2021.03.03

 

1. 서버와 클라이언트7
한 컴퓨터에서 다른 컴퓨터로 어떤 문서 및 정보를 보여달라고 요구했을 때 그 자료를 요청한 컴퓨터를 '클라이언트', 제공해 주는 컴퓨터를 '서버'라고 한다.
서버(Server)는 '제공자, 제공하는 것'이여,
클라이언트(Client)는 '의뢰인, 고객'을 의미한다.

2. 웹서버 (Web Server)
웹 서버란 '웹 서비스를 제공하는 서버'라고 한다.
서버는 서버인데, 웹(www) 상에 있는 서버이기 때문에 인터넷만 연결되어 있다면 어느 나라 어느 장소에 있는 사람이라도 그 곳을 방문 할 수 있다.

3. IIS (Internet Information Services)
IIS란 ASP 페이지가 실행될 수 있는 환경을 제공하는 '웹 서버 프로그램'의 이름이다.

웹 서버의 의미를 '하드웨어(컴퓨터 본체)' 라고 한다면,
IIS란 '소프트웨어(프로그램)'을 의미한다고 생각하면 된다. 

 

ASP란 무엇인가?

ASP란 'Active Server Pages'의 약자이며, '동적으로 서버에서 작동하는 페이지'로 해석한다.

 

<HTML>
<HEAD>
<TITLE> Welcome To Dukyoung.net </TITLE>
</HEAD>
<BODY>
<CENTER>
<% IF Hour(Now) < 12 THEN %>
지금은 오전입니다.
<% ELSE %>
지금은 오후입니다.
<% END IF%>
</CENTER>
</BODY>
</HTML>

 

<% IF Hour(Now) < 12 THEN %>

1. Now() 함수

컴퓨터 시스템에서의 '현재 시간'을 표시

 

2. Hour() 함수

24시간으로 환산한 '시간'을 나타내는 인자가 들어감. 

 

3. IF ~ THEN (조건문)

'만약 ~ 이라면' 이라는 뜻을 가짐. IF와 THEN 사이에는 '참' 또는 '거짓'을 판별할 수 있는 조건이 들어감.

IF 조건 THEN
참일 때의 처리 실행
ELSE
거짓일 때의 처리 실행
END IF

 

1. ASP는 '<%' 으로 시작하여 '%>'으로 끝난다.
2. 클라이언트들은 오직 ASP 코드가 실행된 후의 HTML 페이지만을 볼 수 있다.

 

출처  taeyo.net/lecture/Dukyoung/DYsASP05.asp

'프로그램 > ASP' 카테고리의 다른 글

[ASP] BOF와 EOF의 의미  (0) 2021.03.09
[ASP] 한글 깨짐 해결 방법  (0) 2021.03.08
[ASP] 기초 문법 실습하기  (0) 2021.03.03
ASP 기본 문법 I  (0) 2021.03.03
ASP와 ASP.NET의 차이점  (0) 2021.03.03

 

 

  ASP ASP.NET
컴파일 유/무 인터프리터 방식 컴파일러 방식
플랫폼 측면 IIS 상에서 운영 IIS 와 .NetFramework상에서 운영
소스를 구성하는 기반 언어 VBScript, JScript 닷넷 언어 (C#, VB...)

 

 

참고 링크 www.taeyo.net/Forum/Content.aspx?TBL=ASPNET&SEQ=31335

'프로그램 > ASP' 카테고리의 다른 글

[ASP] BOF와 EOF의 의미  (0) 2021.03.09
[ASP] 한글 깨짐 해결 방법  (0) 2021.03.08
[ASP] 기초 문법 실습하기  (0) 2021.03.03
ASP 기본 문법 I  (0) 2021.03.03
ASP 란 무엇인가?  (0) 2021.03.03

 

  • HTML 은 페이지에 제목, 문단, 표, 이미지, 동영상 등을 정의하고 그 구조와 의미를 부여하는 정적 언어로 웹의 구조를 담당한다.

  • CSS 는 마크업 언어(HTML, XML 등)가 실제 표시되는 방법(색상, 크기, 폰트, 레이아웃 등)을 지정하여 콘텐츠 구조를 꾸며주는 정적 언어로 웹의 시각적인 표현을 담당한다.

  • JS(JavaScript)는 콘텐츠를 바꾸고 움직이는 등 페이지를 동적으로 꾸며주는 역할을 하는 프로그래밍 언어로 웹의 동적 처리를 담당한다.

 

  • HTML로 웹페이지의 뼈대를 만들고 CSS로 웹 페이지의 옷을 입히고, JS로 기능을 추가한다고 할 수 있다.

 

'프로그램 > HTML CSS JavaScript' 카테고리의 다른 글

[CSS] CSS 속성  (0) 2021.03.15
[HTML] HTML 구조  (0) 2021.03.03
[HTML] HTML 태그 정리  (0) 2021.03.03

 

1
SELECT * FROM BOOKS;
cs

 

  NAME WRITER PRICE GENRE
1 홍길동전 허균 30000 소설
2 레미제라블1 빅토르 위고 20000 소설
3 레미제라블2 빅토르 위고 30000 소설

 

BOOKS는 NAME, WRITER, PRICE, GENRE 컬럼이 다 나오는 테이블이다.

 

뷰(VIEW) 생성

1
2
3
4
CREATE OR REPLACE VIEW BOOK
AS
SELECT NAME, WRITER 
FROM BOOKS;
cs

뷰(VIEW) 조회

1
SELECT * FROM BOOK;
cs

 

  NAME WRITER
1 홍길동전 허균
2 레미제라블1 빅토르 위고
3 레미제라블2 빅토르 위고

 

BOOK는 NAME, WRITER 컬럼만 가지고 있는 VIEW이다.

 

뷰(VIEW) 삭제

 

date로 넣은 값을 'YYYY..MM..DD' 형태로 만드는 함수 만들기

 

함수 실행 화면

 

함수 결과 화면

'프로그램 > DataBase' 카테고리의 다른 글

[Oracle] Delete, Truncate, Drop 비교  (0) 2021.03.05
[PL/SQL Developer] 뷰(VIEW) 실습  (0) 2021.02.18
[Oracle] SQL 쿼리문 예제 50문제  (0) 2021.02.16
[Oracle] JOIN  (0) 2021.02.16
[Oracle] 프로시저, 함수의 이해  (0) 2021.02.16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
--1> 부서테이블의 모든 데이터를 출력하라.
SELECT *
FROM EMP
 
--2> EMP테이블에서 각 사원의 직업, 사원번호, 이름, 입사일을 출력하라.
SELECT JOB, EMPNO, ENAME, HIREDATE
FROM EMP
 
--3> EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게 출력하라.
SELECT DISTINCT JOB
FROM EMP
 
--4> 급여가 2850 이상인 사원의 이름 및 급여를 출력하라.
SELECT ENAME, SAL
FROM EMP
WHERE SAL >= 2850
 
--5> 사원번호가 7566인 사원의 이름 및 부서번호를 출력하라.
SELECT ENAME, DEPTNO
FROM EMP
WHERE EMPNO = 7566
 
--6> 급여가 1500이상 ~ 2850이하의 범위에 속하지 않는 모든 사원의 이름 및 급여를 출력하라.
SELECT ENAME, SAL
FROM EMP
WHERE SAL NOT BETWEEN 1500 AND 2850
 
--7> 1981년 2월 20일 ~ 1981년 5월 1일에 입사한 사원의 이름,직업 및 입사일을 출력하되, 
-- 입사일을 기준으로 해서 오름차순으로 정렬하라.
SELECT ENAME, JOB, HIREDATE
FROM EMP
WHERE HIREDATE BETWEEN '1981-02-20' AND '1981-05-01'
ORDER BY HIREDATE
 
--8> 10번 및 30번 부서에 속하는 모든 사원의 이름과 부서 번호를 출력하되, 이름을 알파벳순으로 정렬하라.
SELECT ENAME, DEPTNO
FROM EMP
WHERE DEPTNO IN(10,30)
ORDER BY ENAME
 
--9> 10번 및 30번 부서에 속하는 모든 사원 중 급여가 1500을 넘는 사원의 이름 및 급여를 출력하라.
--(단 컬럼명을 각각 employee 및 Monthly Salary로 지정하시오)
SELECT ENAME AS 'Employee', SAL AS ' Monthly Salary'
FROM EMP
WHERE DEPTNO IN(10,30) AND SAL > 1500
 
--10> 관리자가 없는 모든 사원의 이름 및 직위를 출력하라.
SELECT ENAME, JOB
FROM EMP
WHERE MGR IS NULL
 
--11> 커미션을 받는 모든 사원의 이름, 급려 및 커미션을 출력하되, 급여를 기준으로 내림차순으로 정렬하라.
SELECT ENAME, SAL, COMM
FROM EMP
WHERE COMM IS NOT NULL
ORDER BY SAL DESC;
 
--12> 이름의 세 번째 문자가 A인 모든 사원의 이름을 출력하라
SELECT ENAME
FROM EMP
WHERE ENAMAE LIKE '__A%'
 
--13> 이름에 L이 두 번 들어가며 부서 30에 속해있는 사원의 이름을 출력하라.
SELECT ENAME
FROM EMP
WHERE ENAME LIKE '%L%L%' AND DEPTNO = 30;
 
--14> 직업이 Clerk 또는 Analyst이면서 급여가 1000, 3000, 5000 이 아닌 
-- 모든 사원의 이름, 직업 및 급여를 출력하라. 
SELECT ENAME, JOB, SAL
FROM EMP
WHERE JOB IN('Clerk''Analyst') AND SAL NOT IN(100030005000);
 
--15> 사원번호, 이름, 급여 그리고 15%인상된 급여를 정수로 표시하되 컬럼명을 New Salary로 지정하여 출력하라.
SELECT EMPNO, ENAME, SAL,
                ROUND(SAL + (SAL*0.15), 0) AS "New Salary"
FROM EMP
 
--16> 15번 문제와 동일한 데이터에서 급여 인상분(새 급여에서 이전 급여를 뺀 값)을 추가해서 출력하라.
-- 컬럼명은 Increase로 하라.
SELECT EMPNO, ENAME, SAL, ROUND(SAL + (SAL * 0.15)) AS "New Salary",
    (ROUND(SAL + (SAL * 0.15))) - SAL AS "Increase"
FROM EMP
 
--17> 모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를 표시하는 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.
SELECT UPPER(SUBSTR(ENAME, 11)) || LOWER(SUNSTR(ENAME, 212)) AS "NAME",
    LENGTH(ENAME) AS "LENENAME"
FROM EMP
 
--18> 사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은 사원의 커미션은 'no commission'으로 출력하라.
SELECT ENAME, NVL(TO_CHAR(COMM), 'no commision')
FROM EMP
 
--20> 모든 사원의 이름, 부서 번호, 부서 이름을 표시하는 질의를 작성하라.(DECODE)
SELECT EMPNO, DEPTNO, DECODE(DEPTNO, 10'ACCOUNTING'20'RESEARCH'30'SALES'40'OPERATIONS') AS "DNAME"
FROM EMP;
 
--21> 30번 부서에 속한 사원의 이름과 부서번호 그리고 부서이름을 출력하라.
SELECT E.NAME, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.DEPTNO = 30;
 
--22> 30번 부서에 속한 사원들의 모든 직업과 부서위치를 출력하라.
--(단, 직업 목록이 중복되지 않게 하라.)
SELECT DISTINCT E.JOB, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND D.DEPTNO = 30;
 
--23> 커미션이 책정되어 있는 모든 사원의 이름, 부서이름 및 위치를 출력하라.
SELECT E.ENAME, D.DNAME, D.LOC
FROM EMPE, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND COMM IS NOT NULL
 
--24> 이름에 A가 들어가는 모든 사원의 이름과 부서 이름을 출력하라.
SELECT E.ENAME, D.DNAME
FROM EMP M, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.ENAME LIKE '%A%';
 
--25> Dalls에서 근무하는 모든 사원의 이름, 직업, 부서 번호 및 부서 이름을 출력하라.
SELECT E.ENAME, E.JOB, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND D.LOC = 'Dalls';
 
--26> 사원 이름 및 사원 번호, 해당 관리자 이름 및 관리자 번호를 출력하되,
-- 각 컬럼명을 employee, emp#, manager, mgr#으로 표시하여 출력하라.
SELECT E.ENAME AS "EMPPLOYEE", E.EMPNO AS "EMP#",
M.ENAME AS "MANAGER", M.EMPNO AS "MGR#"
FROM EMP E, EMP M
WHERE E.MGR = M.EMPNO;
 
--27> 모든 사원의 이름, 직업, 부서 이름, 급여 및 등급을 출력하라.
SELECT E.ENAME, E.JOB, D.DNAME, E.SAL, S.GRADE
FROM EMP E, DEPT P, SALGRADE S
WHERE E.DEPTNO = D.DEPTNO
AND E.SAL BETWEEN S.LOSAL AND S.HISAL;
 
--28> Smith 보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.
SELECT ENAME, HIREDATE
FROM EMP
WHERE HIREDATE > (SELECT HIREDATE
    FROM EMP
    WHERE ENAME = 'SMITH');
 
--30> 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 출력하되 각 컬럼명을 Maximum, Minimum, Sum, Average로 지정하여 출력하라.
SELECT MAX(SAL) AS "Maximum",MIN(SAL) AS "Minimum", SUM(SAL) AS "Sum", AVG(SAL) AS "Average"
FROM EMP
 
 
 
cs

 

31. 각 직업별로 급여, 최저액, 최고액, 총액 및 평균액을 출력해라.

 

32. 직업이 동일한 사람 수를 직업과 같이 출력해라.

 

33. 관리자의 수를 출력하되, 관리자 번호가 중복되지 않게해라. 또, 컬럼명을 Number of Manager로 지정하여 출력해라.

 

34. 최고 급여와 최저 급여의 차액을 출력해라.

 

35. 관리자 번호 및 해당 관리자에 속한 사원들의 최저 급여를 출력해라. 단, 관리자가 없는 사원 및 최저 급여가 1000미만인 그룹은 제외시키고 급여를 기준으로 출력 결과를 내림차순으로 정렬해라.

 

36. 부서별로 부서 이름, 부서 위치, 사원 수 및 평균 급여를 출력하라. 그리고 각각의 컬럼명을 부서명, 위치, 사원의 수, 평균 급여로 표시해라.

 

37. Smith와 동일한 부서에 속한 모든 사원의 이름 및 입사일을 출력해라. 단, Smith는 제외하고 출력해라.

 

38. 자신의 급여가 평균 급여보다 많은  모든사원의 사원 번호, 이름, 급여를 표시하는 질의를 작성하고 급여를 기준으로 결과를 내림차순으로 정렬해라.

 

39. 이름에 T가 들어가는 사원의 속한 부서에서 근무하는 모든 사원의 사원번호 및 이름을 출력해라.

 

40. 부서 위치가 Dallas인 모든 사원의 이름, 부서번호 및 직위를 출력하라.

 

41. KING에게 보고하는모든 사원의 이름과 급여를 출력하라.

 

42. Sales 부서의 모든 사원에 대한 부서번호, 이름 및 직위를 출력하라.

 

43. 자신의 급여가 평균 급여보다 많고 이름에 T가 들어가는 사원과 동일한 부서에 근무하는 모든 사원의 사원 번호, 이름 및 급여를 출력해라.

 

44. 커미션을 받는 사원과 급여가 일치하는 사원의 이름, 부서 번호, 급여를 출력해라.

 

45. Dallas에서 근무하는 사원과 직업이 일치하는 사원의 이름, 부서이름 및 급여를 출력해라.

 

46. SCOTT과 동일한 급여 및 커미션을 받는 모든 사원의 이름, 입사일 및 급여를 출력해라.

 

47. 직업이 CLERK인 사원들보다 더 많은 급여를 받는 사원의 사원번호, 이름, 급여를 출력하되, 결과를 급여가 높은 순으로 정렬하라.

 

48. 이름에 A가 들어가는 사원과 같은 직업을 가진 사원의 이름과 월급, 부서번호를 출력하라.

 

49. New York에서 근무하는 사원과 급여 및 커미션이 같은 사원의 사원 이름과 부서명을 출력하라.

 

50. DALLAS에서 근무하는 사원과 직업 및 관리자가 같은 사원의 사원번호, 사원 이름, 직업, 월급, 부서명, 커미션을 출력하되 커미션이 책정되지 않은 사원은 NoCommission으로 표시하고, 커미션의 컬럼명은 Comm으로나오게 출력해라. (단, 최고 월급부터 출력되게 해라.)

 

51. EMP 테이블에서 부서 인원이 4명보다 많은 부서의 부서번호, 인원수, 급여의 합을 출력해라.

'프로그램 > DataBase' 카테고리의 다른 글

[PL/SQL Developer] 뷰(VIEW) 실습  (0) 2021.02.18
[PL/SQL Developer] 함수 실습  (0) 2021.02.18
[Oracle] JOIN  (0) 2021.02.16
[Oracle] 프로시저, 함수의 이해  (0) 2021.02.16
[Oracle] 뷰(VIEW)의 이해  (0) 2021.02.16

JOIN이란?

  • 2개 이상의 테이블을 연결하여 데이터를 검색하는 방법
  • 보통 공통된 값인 PK 및 FK 값을 사용하여 조인한다.
  • 조인은 조인 연산자에 따라 From 절의 조인 형태에 따라서 구별한다.

 

조인의 종류

종류 설명
등가 조인 (equi join)
내부 조인 (inner join)
단순 조인 (simple join)
테이블을 연결한 후에 출력 행을 각 테이블의 특정 열에 일치한 데이터를 기준으로 선정하는 방식
비등가 조인 (non-equi join) 등가 조인 방식 외의 방식 ex) 범위를 조건으로 지정하는 조인
자체 조인 (self join) 하나의 테이블을 여러 개의 테이블처럼 활용하여 조인하는 방식
외부 조인 (outer join) 두 테이블 간의 조인에서 조인 기준 열의 어느 한쪽이 null이어도 강제로 출력하는 방식 (왼쪽 외부 조인과 오른쪽 외부 조인이 있다.)

 

 

■ 익명 블록과 저장 프로그램 차이점

  익명 블록 저장 서브 프로그램
이름 이름 X 이름 지정
오라클 저장 저장할 수 X 저장
컴파일 실행할 때마다 컴파일 저장할 때 한 번 컴파일
공유 공유 불가 공유하여 사용 가능
다른 응용 프로그램에서의
호출 가능 여부
X O

 

■ 저장 서브 프로그램의 대표적인 구현 방식과 용도

서브 프로그램 용도
프로시저 일반적으로 특정 처리 작업 수행을 위한 서브프로그램. SQL문에서는 사용할 수 X
함수 일반적으로 특정 연산을 거친 결과 값을 반환하는 서브프로그램. SQL문에서 사용 가능
패키지 저장 서브프로그램을 그룹화하는 데 사용
트리거 특정 상황(이벤트)이 발생했을 때 자동으로 연달아 수행할 기능을 구현하는데 사용


저장 프로시저 (stored procedure)

 

프로시저는 특정 처리 작업을 수행하는 데 사용하는 저장 서브 프로그램으로 파라미터는 용도에 따라 지정하거나 지정하지 않을 수 있다.

 

1. 파라미터가 없는 프로시저

작업 수행에 입력 데이터가 필요하지 않을 경우 사용

 

1
2
3
4
5
6
7
8
CREATE [OR REPLACE] PROCEDURE [프로시저 이름]
IS|AS
    [선언부]
BEGIN
    [실행부]
EXCEPTION
    [예외 처리부]
END    [프로시저 이름];
cs

 

OR REPLACE (선택) : 지정한 이름을 가진 프로시저가 이미 존재하면 현재 작성한 내용으로 대체(덮어 씌우기)

IS | AS : 선언부를 시작하기 위해 IS나 AS 사용. 선언부가 존재하지 않더라도 반드시 명시해야 하며 DECLARE 키워드는 사용 X

EXCEPTION (선택) : 예외를 처리하기 위한 예외처리부

END [프로시저 이름] : 프로시저 생성의 종료를 의미. 프로시저 이름 생략 가능

 

2. 파라미터를 사용하는 프로시저

입력 데이터가 필요한 경우 파라미터를 정의. 여러 개 작성 가능

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE [OR REPLACE] PROCEDURE [프로시저 이름]
 
[(파라미터 이름1 [modes] 자료형 [ := || DEFAULT 기본값],
  파라미터 이름2 [modes] 자료형 [ := || DEFAULT 기본값],
  ...
  파라미터 이름N [modes] 자료형 [ := || DEFAULT 기본값]
)]
IS|AS
    [선언부]
BEGIN
    [실행부]
EXCEPTION
    [예외 처리부]
END    [프로시저 이름];
cs

 

[파라미터 이름 ~ ] : 실행에 필요한 파라미터 정의. 여러 개일 경우 쉼표(,)로 구분하여 지정. 기본값과 modes는 생략가능

[파라미터의 모드]

  1. IN : 프로시저를 호출할 때 값을 입력 받음 (지정하지 않으면 기본 값)
  2. OUT : 호출할 때 값을 반환
  3. IN OUT : 호출할 때 값을 입력 받은 후 실행 결과 값을 반환

 

■ 프로시저 오류 정보 확인

프로시저를 생성할 때 발생하는 오류를 확인할 수있는 방법 2가지

  1. SHOW ERRORS(ERR) : 가장 최근에 생성되거나 변경된 서브 프로그램의 오류 정보를 출력
  2. USER_ERRORS : 오류 정보를 확인할 수 있는 데이터 사전

 

■ 함수 (function)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE [OR REPLACE] FUNCTION [함수 이름]
 
[(파라미터 이름1 [IN] 자료형 1,
  파라미터 이름2 [IN] 자료형 2,
  ...
  파라미터 이름N [IN] 자료형 N
)]
RETURN [자료형]
IS|AS
    [선언부]
BEGIN
    [실행부]
    RETURN (반환 값);
EXCEPTION
    [예외 처리부]
END    [ 이름];
cs

 

[파라미터 이름 ~ ] (선택) : 함수 실행에 사용할 입력 값이 필요하면 파라미터를 지정. 필요에 따라 여러 개 정의 가능. 프로시저와 달리 IN모드만 지정 가능

RETURN [자료형] : 함수의 실행 후 반환값의 자료형을 정의

RETURN (반환 값) : 함수의 반환값을 지정

 

■ 함수와 프로시저의 차이점

특징 프로시저 함수
실행 EXECUTE 명령어 또는 다른 PL/SQL 서브 프로그램 내에서 호출하여 실행 변수를 사용한 EXECUTE 명령어 또는 다른 PL/SQL 서브 프로그램에서 호출하여 실행하거나 SQL문에서 직접 실행 가능
파라미터 지정 필요에 따라 지정하지 않을 수도 있고 여러 개 지정할 수도 있으며 IN, OUT, IN OUT 세 가지 모드 사용 가능 프로시저와 같게 지정하지 않을 수도 있고 여러개 지정할 수도 있지만 IN모드(또는 생략)만 가능
값의 반환 실행 후 값의 반환이 없을 수도 있고, OUT, IN OUT 모드의 파라미터 수에 따라 여러 개 값을 반환 가능 반드시 하나의 값만 반환해야 하며 값의 반환은 프로시저와 달리 OUT, IN OUT모드의 파라미터를 사용하는 것이 아니라 RETURN 절과 RETURN 문을 통해 반환

 

■ 커서 (CURSOR)

 

커서란 특정 SQL  문장을 처리한 결과를 담고있는 메모리 영역을 가리키는 일종의 포인터이다. 커서의 종류에는 묵시적 커서와 명시적 커서가있다.  묵시적 커서는 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될 때마다 자동으로 만들어져 실행되는 커서이고 명시적 커서는 사용자가 직접 정의해서 사용하는 커서이다.

 

 

+ Recent posts