[SQL] PL / SQL의 기능과 절차의 차이점은 무엇입니까?
SQLPL / SQL의 기능과 절차의 차이점은 무엇입니까?
PL / SQL의 기능과 절차의 차이점은 무엇입니까?
해결법
-
==============================
1.함수가 가지고있는 반면 절차는 반환 값이 없습니다.
함수가 가지고있는 반면 절차는 반환 값이 없습니다.
예:
CREATE OR REPLACE PROCEDURE my_proc (p_name IN VARCHAR2 := 'John') as begin ... end CREATE OR REPLACE FUNCTION my_func (p_name IN VARCHAR2 := 'John') return varchar2 as begin ... end
공지 사항이 함수는 매개 변수 목록과 "로"키워드 사이의 반환 절을 얼마나. 이 함수의 몸 내부의 마지막 문을 미칠 것으로 예상되는이 방법은 뭔가를 같이 읽기 :
return(my_varchar2_local_variable);
어디 my_varchar2_local_variable은 그 함수에 의해 반환해야합니다 일부 VARCHAR2입니다.
-
==============================
2.일 함수는 SQL 문, 예컨대로에 늘어선 수
일 함수는 SQL 문, 예컨대로에 늘어선 수
select foo ,fn_bar (foo) from foobar
어떤 저장 프로 시저 수행 할 수 없습니다. 그들은 순수한 것을 요구하는 이러한 맥락에서 기능을 수행 할 수있는 쿼리 옵티마이 제한의 구조, (즉, 동일한 입력이 항상 동일한 출력을 생성). 이 "순수"로 정의 된 경우 함수에서 수행하지만, 허용 할 수있는 일이 제한합니다 그것은 인라인 쿼리에 사용할 수 있습니다.
그렇지 않은 경우, 기능 (반드시 결정 성)은 변수 또는 결과 집합을 반환 할 수있다. 결과 집합을 반환하는 함수의 경우, 쿼리에서 다른 선택에 대해 그것을 가입 할 수 있습니다. 그러나 (이 중단 문제처럼 계산하기 어려운 것입니다) 종류의 결과 집합이 반환됩니다 예측할 수없는 옵티마이 같은 상관 하위 쿼리에서이 같은 비 결정적 기능을 사용할 수 없습니다.
-
==============================
3.저장 프로 시저 및 함수는 모두 데이터베이스에 상주하고 필요한 경우로하고 실행할 수있는 블록을 지정됩니다.
저장 프로 시저 및 함수는 모두 데이터베이스에 상주하고 필요한 경우로하고 실행할 수있는 블록을 지정됩니다.
주요 차이점은 다음과 같습니다
실질적으로 내가 요구 사항의 특정 그룹과 여러 시나리오에서 공유 할 수있는 일반적인 요구 사항에 대한 기능을위한 저장 프로 시저 이동 것이라고 말하기. 예를 들어 두 개의 문자열 사이 비교하거나 트리밍 또는 우리가하는 기능이있는 경우, 마지막 부분을 가지고, 우리는 전 세계적으로 우리가 가지고 모든 응용 프로그램을 사용할 수 있습니다.
-
==============================
4.죽은 간단한 방법에서는이 의미를 만든다.
죽은 간단한 방법에서는이 의미를 만든다.
기능 :
이 서브 프로그램은 단일 값을 반환; 주로 계산하고 값을 반환하는 데 사용됩니다.
절차 :
이 서브 프로그램에 직접 값을 반환하지 않습니다 주로 작업을 수행하는 데 사용된다.
예제 프로그램 :
CREATE OR REPLACE PROCEDURE greetings BEGIN dbms_output.put_line('Hello World!'); END ; /
독립 프로 시저를 실행 :
독립 절차는 두 가지 방법으로 호출 할 수 있습니다 :
• 사용 키워드 EXECUTE • PL / SQL 블록에서 프로 시저의 이름을 호출
절차는 또 다른 PL / SQL 블록에서 호출 할 수 있습니다 :
BEGIN greetings; END; /
함수:
CREATE OR REPLACE FUNCTION totalEmployees RETURN number IS total number(3) := 0; BEGIN SELECT count(*) into total FROM employees; RETURN total; END; /
다음 프로그램은 다른 블록에서 함수 전체 고객을 호출
DECLARE c number(3); BEGIN c := totalEmployees(); dbms_output.put_line('Total no. of Employees: ' || c); END; /
-
==============================
5.다음은 절차와 기능 사이의 주요 차이점이다,
다음은 절차와 기능 사이의 주요 차이점이다,
-
==============================
6.몇 즉 - 기능은 뭔가를 반환합니다. 당신은 SQL 쿼리 기능을 사용할 수 있습니다. 절차 데이터로 무언가를하는 코드의 일부입니다하지만 당신은 쿼리의 절차를 호출하면 PL / SQL 블록에서 실행 할 수 없습니다.
몇 즉 - 기능은 뭔가를 반환합니다. 당신은 SQL 쿼리 기능을 사용할 수 있습니다. 절차 데이터로 무언가를하는 코드의 일부입니다하지만 당신은 쿼리의 절차를 호출하면 PL / SQL 블록에서 실행 할 수 없습니다.
-
==============================
7.이것은 내가 뭘 찾았는지의 차이입니다. 있는 경우 알려 주시기 바랍니다.
이것은 내가 뭘 찾았는지의 차이입니다. 있는 경우 알려 주시기 바랍니다.
from https://stackoverflow.com/questions/771949/what-is-the-difference-between-function-and-procedure-in-pl-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 고유 값의 발생을 카운트 (0) | 2020.04.18 |
---|---|
[SQL] SQL / MySQL의에서 "ON"과 "WHERE"의 차이는 문을 조인 무엇입니까? (0) | 2020.04.18 |
[SQL] PostgreSQL의에서 누적 합계를 계산 (0) | 2020.04.18 |
[SQL] MySQL의 : 저장 프로 시저 내에서 트랜잭션 (transaction) (0) | 2020.04.18 |
[SQL] SQL 열에서 문자의 인스턴스를 계산하는 방법 (0) | 2020.04.18 |