오라클의 저장 프로시저와 함수의 차이점은 무엇입니까?

青灯夜游
풀어 주다: 2022-02-22 18:38:55
원래의
8861명이 탐색했습니다.

차이점: 1. 저장 프로시저는 데이터베이스의 특정 작업이나 작업을 완료하는 데 사용되는 반면 함수는 특정 데이터에 사용됩니다. 2. 저장 프로시저의 프로그램 헤더는 PROCEDURE로 선언되며 선언 시 반환 유형이 필요하지 않습니다. , 함수 프로그램은 헤더 선언에 FUNCTION을 사용하고 선언할 때 반환 유형을 설명합니다.

오라클의 저장 프로시저와 함수의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

Stored Procedure

Stored Procedure(저장 프로시저)는 특정 기능을 완료하기 위한 SQL 문 집합으로, 컴파일되어 데이터베이스에 저장됩니다. 사용자는 이름을 지정하고 매개변수(저장 프로시저에 매개변수가 있는 경우)를 제공하여 저장 프로시저를 실행합니다. 저장 프로시저는 데이터베이스의 중요한 개체이므로 잘 설계된 데이터베이스 응용 프로그램에서는 저장 프로시저를 사용해야 합니다. 저장 프로시저는 흐름 제어 및 SQL 문으로 작성된 프로시저로, 이 프로시저를 컴파일하고 최적화하여 데이터베이스 서버에 저장하면 응용 프로그램에서 사용할 때만 호출됩니다. ORACLE에서는 여러 관련 프로시저를 결합하여 프로그램 패키지를 구성할 수 있습니다.

장점:

1. 저장 프로시저가 생성될 때만 컴파일됩니다. 나중에 저장 프로시저가 실행될 때마다 다시 컴파일할 필요가 없습니다. 따라서 저장 프로시저를 사용하면 데이터베이스 실행 속도가 향상될 수 있습니다.

2. 데이터베이스에서 복잡한 작업(예: 여러 테이블에 대한 업데이트, 삽입, 쿼리 및 삭제)을 수행할 때 이 복잡한 작업은 저장 프로시저에 캡슐화되어 데이터베이스에서 제공하는 트랜잭션 처리와 함께 사용될 수 있습니다.

3. 저장 프로시저를 재사용할 수 있어 데이터베이스 개발자의 작업량을 줄일 수 있습니다.

4. 높은 보안으로 특정 사용자만 지정된 저장 프로세스를 사용할 수 있는 권한을 갖도록 설정할 수 있습니다.

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

둘 사이의 가장 큰 차이점은 다음과 같습니다.

1) 함수는 항상 호출자에게 데이터를 반환하며 일반적으로 저장 프로시저 2). (프로시저)는 데이터를 직접 반환하지는 않지만, 출력 매개변수의 값을 변경할 수 있는데, 이는 대략적으로 반환값이라고 볼 수 있으며, 저장프로시저의 출력 매개변수 값의 개수에는 제한이 없다.

일반적인 애플리케이션 관점에서 반환 값이 필요하지 않거나 여러 반환 값이 필요한 경우 반환 값을 하나만 사용하는 경우 함수를 사용하세요.

2. 함수 정의에는 DDL(예: select 등) 문만 있을 수 있습니다. DML 문은 주로 프로시저(데이터베이스에서 업데이트, 삽입, 쿼리, 삭제 등의 복잡한 작업을 수행하는 경우)에 사용됩니다. 여러 테이블).

선택 결과 집합을 사용하려면 커서를 사용해야 합니다

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

저장 프로시저

기능

데이터베이스의 특정 작업이나 작업(예: 삽입, 삭제 등)을 완료하는 데 사용됩니다.

특정 데이터(예: 쿼리 반환 값)에 사용됩니다.

프로그램 헤더 문은 PROCEDURE

을 사용합니다.

프로그램 헤더 선언은 FUNCTION

프로그램 헤더 선언 시 반환 유형이 필요하지 않습니다.

프로그램 헤더 선언 시 반환 유형을 기술해야 하며, PL/SQL 블록에는 유효한 RETURN 문이 하나 이상 포함되어야 합니다

IN/OUT/IN OUT 3가지 매개변수 모드를 사용할 수 있습니다

IN/OUT/IN OUT 3가지 매개변수 모드를 사용할 수 있습니다

독립적인 PL/SQL 문으로 실행 가능

독립적으로 실행될 수 없으며 표현식의 일부로 호출되어야 함

OUT/IN OUT을 통해 0개 이상의 값을 반환할 수 있음

RETURN 문은 값을 반환하며, 그 값은 선언 부분과 일치하며, OUT 유형의 매개 변수를 통해서도 변수를 가져올 수 있습니다.

SQL 문(DML 또는 SELECT)에서는 저장 프로시저를 호출할 수 없습니다.

SQL 문(DML 또는 SELECT)에서 함수를 호출할 수 있습니다.

오라클의 저장 프로시저와 함수의 차이점은 무엇입니까?

실제 사례

1. 함수

(1) 함수 생성

create or replace function get_salary(
    dept_no number,
    emp_count **out** number)
    return number IS
    v_sum number;begin
    ...exception    ...end get_salary
로그인 후 복사

(2) 함수 호출

declare 
    v_num number;
    v_sum number;begin
    ...(这里应该出现函数名表示调用)end
로그인 후 복사

2. 저장 프로시저 생성

create or replace procedure pro_demo(
    dept_no number default 10,
    sal_sum out number,
    emp_count out number)
IS
begin
    ...
exception
    ...
end proc_demo;
로그인 후 복사
.

(2 ) 저장 프로시저 호출

호출 구문:

1), exec <프로세스 이름>;

2), <프로세스 이름>;

3) 실행, PL/SQL 문 블록에서 직접 호출.

예:

declare
    v_num number;
    v_sum number(8,2);
begin
    procedure pro_demo(dept_no=>1,sal_num=>900,emp_count=>10)(这里出现存储过程名表示调用,传递参数值用=>)
end;
로그인 후 복사

3. 로컬 저장 프로시저

PL/SQL에서는 create 키워드를 사용하지 않고 선언 블록에 로컬 저장 프로시저를 생성할 수도 있습니다. 데이터베이스 변경 시 발생하는 문제를 방지하기 위해 주요 사용 시나리오는 저장 프로시저를 나중에 여러 번 재사용하는 대신 일시적으로 사용하는 것입니다.

예:

declare
    v_num number;
    v_sum number(8,2);
procedure proc_demo(
    dept_no number default 10,
    sal_sum out number,
    emp_count out number)
IS
begin
    ...(这里不用出现存储过程名)
exception
    ...
end proc_demo;
로그인 후 복사

추천 튜토리얼: "

Oracle Tutorial

"

위 내용은 오라클의 저장 프로시저와 함수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿