> 데이터 베이스 > Oracle > Oracle 저장 프로시저의 예

Oracle 저장 프로시저의 예

WBOY
풀어 주다: 2023-05-11 11:13:06
원래의
2248명이 탐색했습니다.

저장 프로시저는 필요할 때 호출할 수 있는 일련의 SQL 문과 제어 문을 포함하는 미리 컴파일된 데이터베이스 프로그램입니다. 이 문서에서는 Oracle 데이터베이스 저장 프로시저에 대한 기본 지식과 예를 소개합니다.

1. 저장 프로시저의 기본

1.1 저장 프로시저의 장점

저장 프로시저는 데이터베이스 성능을 향상시키는 효과적인 방법입니다. SQL 문은 데이터베이스 측에서 미리 컴파일되어 호출 시 작업을 더 빠르게 완료할 수 있으므로 데이터베이스와의 애플리케이션 상호 작용 효율성이 향상됩니다. 또한 저장 프로시저가 데이터베이스에서 데이터를 생성하고 수정하기 전에 권한 검사를 수행할 수 있으므로 데이터 보안이 향상됩니다.

1.2 저장 프로시저 생성

Oracle SQL 개발 도구를 사용하여 저장 프로시저를 생성할 수 있습니다. Oracle SQL Developer 및 SQL Plus는 일반적으로 사용되는 도구입니다.

다음은 저장 프로시저를 생성하기 위한 기본 구문입니다.

CREATE [OR REPLACE] PROCEDURE 프로시저_이름
([parameter_name IN/OUT 데이터 유형 [, 매개변수 이름 IN/OUT 데이터 유형 …]])
IS
BEGIN
문(s );
EXCEPTION
예외 처리기;
END;

그 중 매개 변수는 선택 사항이며 '[OR REPLACE]' 명령은 응용 프로그램이 존재해야 하고 저장 프로시저의 상태를 유지하도록 지정할 수 있습니다.

1.3 저장 프로시저의 입력 및 출력 매개변수

저장 프로시저는 입력 매개변수와 출력 매개변수를 허용할 수 있습니다. 입력 매개 변수는 저장 프로시저 내에서 조건부 작업을 수행하거나 저장 프로시저에 데이터를 전달하는 데 사용될 수 있습니다. 출력 매개변수는 출력 프로세스에서 값이나 지정된 값과 같은 정보를 반환하는 데 사용됩니다.

다음은 일부 매개변수가 상호 작용하는 방식입니다.

IN: 입력 매개변수는 저장 프로시저에 값을 전달하는 데 사용됩니다.

OUT: 출력 매개변수는 입력 데이터에 사용되지 않지만 저장 프로시저를 통해 값을 반환할 수 있습니다.

INOUT: 입력/출력 매개 변수를 사용하면 값을 매개 변수로 전달할 수 있으며 저장 프로시저의 실행 반환 값을 통해 변경할 수 있습니다.

1.4 저장 프로시저의 예외 처리

저장 프로시저는 함수와 같은 예외를 처리할 수 있습니다. 저장 프로시저에서 오류가 발생하는 경우 예외 처리를 설정할 수 있습니다. 사용자 정의 오류 메시지 관리를 구현하고 지정된 동작을 사용하여 오류가 발생할 때 이러한 오류를 제출할 수 있습니다.

다음은 예외 처리 생성을 위한 기본 구문입니다.

DECLARE
예외_이름 EXCEPTION;
PRAGMA EXCEPTION_INIT (예외_이름, 오류_코드);
BEGIN
문;
EXCEPTION

  WHEN exception_name THEN
     statement(s);
로그인 후 복사

END;

2. 인스턴스

다음은 몇 가지 일반적인 저장 프로시저 예입니다.

2.1 저장 프로시저의 단순 쿼리

다음은 테이블의 조건을 충족하는 데이터를 출력하는 간단한 저장 프로시저 예입니다.

CREATE OR REPLACE PROCEDURE get_emp_data
(
ID IN NUMBER,
NAME OUT VARCHAR2,
SALARY OUT NUMBER
)
IS
BEGIN
SELECT Employee_name,salary INTO NAME,SALARY FROM 직원 WHERE Employee_id = ID;
END;

위의 저장 프로시저 인스턴스에는 다음이 필요합니다. 2개의 매개변수 전달: ID는 정보를 쿼리할 직원의 ID를 정의하는 필수 입력 매개변수이고 이름과 급여는 각각 쿼리 결과에서 해당 열의 값을 허용하는 출력 매개변수입니다. .

저장 프로시저의 출력 매개변수 값을 검색합니다. 함수처럼 저장 프로시저를 호출할 수 있습니다.

DECLARE
emp_name VARCHAR2(20);
emp_salary NUMBER(10,2);
BEGIN
get_emp_data (100, emp_name,emp_salary);
DBMS_OUTPUT.PUT_LINE('이름: ' || emp_name);
DBMS_OUTPUT.PUT_LINE('Salary: ' || emp_salary);
END;

위 코드에서는 저장 프로시저 매개변수 ID가 설정되었습니다. 100으로 하면 직원의 이름과 급여가 반환됩니다.

2.2 저장 프로시저의 삽입 작업

다음은 지정된 직원 명단에 데이터 행을 삽입하는 기능을 구현하는 저장 프로시저의 예입니다.

CREATE OR REPLACE PROCEDURE add_employee
(
ID IN NUMBER,
NAME IN VARCHAR2,
AGE IN NUMBER,
SALARY IN NUMBER
)
IS
BEGIN
INSERT INTO 직원 VALUES (ID,NAME,AGE,SALARY);
COMMIT;
DBMS_OUTPUT.PUT_LINE('직원이 추가되었습니다.');
EXCEPTION
OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error adding employee.');
로그인 후 복사

END;

위의 저장 프로시저 인스턴스에는 직원 ID, 직원 이름, 직원 연령, 직원 급여 등 4개의 입력 매개변수가 필요하며, 이 매개변수는 "직원" 테이블에 삽입됩니다. 삽입에 성공하면 "직원 추가" 메시지가 출력되고, 삽입에 실패하면 "직원 추가 오류" 메시지가 출력됩니다.

2.3 저장 프로시저의 업데이트 작업

다음 예에서는 직원 테이블에 지정된 ID를 가진 직원의 급여를 10% 늘리는 기능을 제공합니다.

CREATE OR REPLACE PROCEDURE raise_employee_salary
(
ID IN NUMBER
)
IS
커서 c_employee_salary IS

SELECT salary FROM employees WHERE employee_id = ID;
로그인 후 복사

v_employee_salary NUMBER;
BEGIN
OPEN c_employee_salary;
c_employee_salary INTO v_employee_salary;
v_employee_salary := v_ Employee_salary * 1.1;
직원 업데이트 SET 급여 = v_employee _salary WHERE Employee_id = ID;
COMMIT;
DBMS_OUTPUT .PUT_LINE('급여가 인상되었습니다.');
EXCEPTION
WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('Employee not found.');
로그인 후 복사

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error increasing salary.');
로그인 후 복사

END;

위의 저장 프로시저 예시에는 직원 ID라는 1개의 입력 매개변수가 필요하며, 직원 ID를 기준으로 직원의 급여를 가져오고 여기에 1.1을 곱하여 테이블에 업데이트합니다. 올바르게 업데이트되면 직원을 찾을 수 없으면 "급여 인상" 메시지가 표시되고, 다른 오류가 발생하면 "급여 인상 오류" 메시지가 표시됩니다.

요약

이 글에서는 Oracle 데이터베이스 저장 프로시저의 기본 사항과 몇 가지 예를 소개했습니다. 저장 프로시저는 데이터베이스 성능과 데이터 보안을 향상시킬 수 있으며 자주 수행해야 하는 작업에 매우 유용합니다. 몇 가지 예를 통해 Oracle 저장 프로시저를 만들고 사용하는 방법을 더 잘 이해할 수 있습니다.

위 내용은 Oracle 저장 프로시저의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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