일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jsp
- NCS
- Oracle
- rinux
- sql
- php
- Cisco
- Java
- 네트워크
- html
- javaee
- jsp연결
- autoset
- 정처기필기
- 오라클
- 이것이 자바다
- 데이터베이스
- 네트워크관리사
- 정보처리기사
- ospf
- 리눅스
- VLAN
- cisco packet
- 참조타입
- 원형그래프
- 라우터
- 자바
- ciscopacket
- 버추얼머신
- w3school
- Today
- Total
기록해! 정리해!
7-2 본문
5. select 구문
--select 경우의 수 2가지
1. 리턴이 1개 : put_line
2. 리턴이 여러개 : pkg
--insert,update,delete는 리턴 안함
[ 1 ] 하나의 레코드값 출력하기
Create procedure mySelect1
as
var1 VARCHAR2(10);
var2 VARCHAR2(30);
var3 VARCHAR2(30);
begin
select sno, sname, dept into var1, var2, var3 from student
where sno=100;
DBMS_OUTPUT.put_line('학생정보'|| var1 ||' ' || var2 || ' ' || var3);
end;
-------------------------------------------------------------------------
EXECUTE mySelect1();
[ 2 ] 조건을 받아 하나의 레코드값 출력하기
Create procedure mySelect2
(
strSno in VARCHAR2
)
as
var1 VARCHAR2(10);
var2 VARCHAR2(30);
var3 VARCHAR2(30);
begin
select sno, sname, dept into var1, var2, var3 from student
where sno=strSno ;
DBMS_OUTPUT.put_line('학생정보: '|| var1 ||' ' || var2 || ' ' || var3);
end;
--------------------------------------
EXECUTE mySelect2('200');
create or replace procedure sp_student_select2
(
strSno in varchar2,
strName in varchar2
)
as
var1 varchar2(10);
var2 varchar2(30);
var3 varchar2(30);
begin
select sno, sname, dept into var1,var2,var3 from student
where sno=strSno or sname=strName;
DBMS_OUTPUT.put_line('학생정보:'||var1||' '||var2||' '||var3); --한 라인만 출력할 수 있고 여러라인은 출력할 수 없음
end;
execute sp_student_select2('200'); --두개인데 하나넣으면 에러
execute sp_student_select2('999','박종화'); --or라서 한명만 나옴
execute sp_student_select2('200','박종화'); --두사람이 나와야하는데 오류가 난다
PUT_LINE은 한 라인만 출력가능하고 여러라인은 출력 불가하기 때문에
6. 패키지 만들기 ( 여러개의 레코드 실행 )
create or replace package pkg is
type t_ref is ref cursor;
end;
----------------------------------------------
CREATE OR REPLACE procedure myProc1
(
ret OUT pkg.t_ref
)
is
BEGIN
OPEN ret FOR
SELECT * from enrol ;
END;
--------------------------------------------------------------------------
* 여러개의 레코드 결과값을 보는 경우 실행 명령은 의미가 없다.
Execute() <--- 실행해도 의미가 없다. !!
[ 프로시져에서 오른쪽 클릭해서 결과를 봐야 한다. ]
create or replace procedure sp_student_select4 --프로시저 네임
(
ret out pkg.t_ref, --아웃풋
strSname1 in varchar2, --인풋
strSname2 in varchar2
)
is
begin
open ret for
select sno, sname, dept from student
where sname like strsname1 or dept like strsname2; --in 값에 %둘% 이렇게 넣어야함
end;
where sname like '%'||strsname1||'%' or dept like '%'||strsname2||'%'; --in 값에 둘 이렇게 넣어야함
-- 파이프라인 오라클에서만 가능
--execute 하면 안나오고 프로시저에서 [실행] in 값에 직접 입력해줘야한다 [출력변수]
'Oracle' 카테고리의 다른 글
7-4(bigdata) (0) | 2022.05.24 |
---|---|
7-3 (프로시저) (0) | 2022.05.24 |
6-SQL 기본문법 정리 (0) | 2022.05.24 |
7-1 (0) | 2022.05.24 |
7-예제1(데이터 베이스 용어) (0) | 2022.05.24 |