차이점: 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;
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!