"Execute 와 call 차이점"의 두 판 사이의 차이
DB CAFE
(→예제) |
(→예제) |
||
(같은 사용자의 중간 판 하나는 보이지 않습니다) | |||
12번째 줄: | 12번째 줄: | ||
==== EXEC ==== | ==== EXEC ==== | ||
# EXEC는 SP뿐만 아니라 임의의 문장을 실행 할수 있음. | # EXEC는 SP뿐만 아니라 임의의 문장을 실행 할수 있음. | ||
− | #: EXEC could be used to execute not only an SP, but an arbitrary statement. | + | #: (EXEC could be used to execute not only an SP, but an arbitrary statement.) |
# 만약 SP가 파라미터가 없으면 아래와 같이 사용가능<source lang=sql>EXEC SP;</source> | # 만약 SP가 파라미터가 없으면 아래와 같이 사용가능<source lang=sql>EXEC SP;</source> | ||
# 그러나 CALL 은 아래와 같이 빈괄호 필요함. <source lang=sql>CALL SP();</source> | # 그러나 CALL 은 아래와 같이 빈괄호 필요함. <source lang=sql>CALL SP();</source> | ||
− | === 예제 === | + | === 차이점 테스트 예제 === |
* 토드에서 아래 함수 실행시 차이점을 확인 할수 있음. | * 토드에서 아래 함수 실행시 차이점을 확인 할수 있음. | ||
*: If you are calling a proc that returns a sys_refcursor using Toad, | *: If you are calling a proc that returns a sys_refcursor using Toad, |
2024년 7월 23일 (화) 18:14 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 프로시져 실행시 Execute 와 call 차이점[편집]
- EXEC[ute] SP() 와 CALL SP() 둘다 SQL*Plus 에서 사용가능
- BEGIN SP(); END; PL/SQL로도 가능
1.1 차이점[편집]
1.1.1 CALL[편집]
- CALL 은 Oracle SQL 이고 어디에서든 동작한다.
- SQL*Plus 이외 다른 DB 클라이언트 프로그램 EXEC를 지원하지 않는다.(Toad,Orange 에서도 동작함.)
- CALL SP; 에 사용되는 파라미터는 반드시 SQL data type 이여야 함.
- - BOOLEAN 과 같은 PL/SQL-only data type 은 동작 하지 않음.
1.1.2 EXEC[편집]
- EXEC는 SP뿐만 아니라 임의의 문장을 실행 할수 있음.
- (EXEC could be used to execute not only an SP, but an arbitrary statement.)
- 만약 SP가 파라미터가 없으면 아래와 같이 사용가능
EXEC SP;
- 그러나 CALL 은 아래와 같이 빈괄호 필요함.
CALL SP();
1.2 차이점 테스트 예제[편집]
- 토드에서 아래 함수 실행시 차이점을 확인 할수 있음.
- If you are calling a proc that returns a sys_refcursor using Toad,
-- difference between CALL and EXEC.
create procedure foo(i in number,o out sys_refcursor)
as
begin
open o for select i from dual;
end;
exec foo(1,:r); -- 1 rows
call foo(1,:r); -- 0 rows
- 매개 변수에 ;(콜론) 을 붙일 때, Toad는 유형(이 경우 커서)을 입력하라는 메시지를 표시.