복붙노트

[SQL] PL / SQL의 기능과 절차의 차이점은 무엇입니까?

SQL

PL / SQL의 기능과 절차의 차이점은 무엇입니까?

PL / SQL의 기능과 절차의 차이점은 무엇입니까?

해결법

  1. ==============================

    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. ==============================

    2.일 함수는 SQL 문, 예컨대로에 늘어선 수

    일 함수는 SQL 문, 예컨대로에 늘어선 수

    select foo
          ,fn_bar (foo)
      from foobar
    

    어떤 저장 프로 시저 수행 할 수 없습니다. 그들은 순수한 것을 요구하는 이러한 맥락에서 기능을 수행 할 수있는 쿼리 옵티마이 제한의 구조, (즉, 동일한 입력이 항상 동일한 출력을 생성). 이 "순수"로 정의 된 경우 함수에서 수행하지만, 허용 할 수있는 일이 제한합니다 그것은 인라인 쿼리에 사용할 수 있습니다.

    그렇지 않은 경우, 기능 (반드시 결정 성)은 변수 또는 결과 집합을 반환 할 수있다. 결과 집합을 반환하는 함수의 경우, 쿼리에서 다른 선택에 대해 그것을 가입 할 수 있습니다. 그러나 (이 중단 문제처럼 계산하기 어려운 것입니다) 종류의 결과 집합이 반환됩니다 예측할 수없는 옵티마이 같은 상관 하위 쿼리에서이 같은 비 결정적 기능을 사용할 수 없습니다.

  3. ==============================

    3.저장 프로 시저 및 함수는 모두 데이터베이스에 상주하고 필요한 경우로하고 실행할 수있는 블록을 지정됩니다.

    저장 프로 시저 및 함수는 모두 데이터베이스에 상주하고 필요한 경우로하고 실행할 수있는 블록을 지정됩니다.

    주요 차이점은 다음과 같습니다

    실질적으로 내가 요구 사항의 특정 그룹과 여러 시나리오에서 공유 할 수있는 일반적인 요구 사항에 대한 기능을위한 저장 프로 시저 이동 것이라고 말하기. 예를 들어 두 개의 문자열 사이 비교하거나 트리밍 또는 우리가하는 기능이있는 경우, 마지막 부분을 가지고, 우리는 전 세계적으로 우리가 가지고 모든 응용 프로그램을 사용할 수 있습니다.

  4. ==============================

    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. ==============================

    5.다음은 절차와 기능 사이의 주요 차이점이다,

    다음은 절차와 기능 사이의 주요 차이점이다,

  6. ==============================

    6.몇 즉 - 기능은 뭔가를 반환합니다. 당신은 SQL 쿼리 기능을 사용할 수 있습니다. 절차 데이터로 무언가를하는 코드의 일부입니다하지만 당신은 쿼리의 절차를 호출하면 PL / SQL 블록에서 실행 할 수 없습니다.

    몇 즉 - 기능은 뭔가를 반환합니다. 당신은 SQL 쿼리 기능을 사용할 수 있습니다. 절차 데이터로 무언가를하는 코드의 일부입니다하지만 당신은 쿼리의 절차를 호출하면 PL / SQL 블록에서 실행 할 수 없습니다.

  7. ==============================

    7.이것은 내가 뭘 찾았는지의 차이입니다. 있는 경우 알려 주시기 바랍니다.

    이것은 내가 뭘 찾았는지의 차이입니다. 있는 경우 알려 주시기 바랍니다.

  8. from https://stackoverflow.com/questions/771949/what-is-the-difference-between-function-and-procedure-in-pl-sql by cc-by-sa and MIT license