>  기사  >  데이터 베이스  >  Oracle 저장 프로시저의 기능은 무엇입니까?

Oracle 저장 프로시저의 기능은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-02-24 17:58:414481검색

Oracle 저장 프로시저의 기능은 다음과 같습니다. 1. 복잡한 작업을 단순화하고 전체 개발 비용을 줄입니다. 2. 데이터 독립성을 높입니다. 3. 오류 가능성을 효과적으로 줄이고 보안을 향상할 수 있습니다.

Oracle 저장 프로시저의 기능은 무엇입니까?

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

오라클 저장 프로시저는 실제 데이터베이스 개발 과정에서 자주 사용되는 기술로, 데이터베이스 개발자에게 필수적인 기술로, SQL 문에서 대체할 수 없는 역할을 합니다. 소위 저장 프로시저(Stored Procedure)는 특정 비즈니스 기능을 수행하기 위해 데이터베이스에 저장되는 프로그램 모듈입니다. 하나 이상의 PL/SQL 코드 블록 또는 SQL 문으로 구성된 일련의 코드 블록입니다.

저장 프로시저의 역할(장점):

  • 복잡한 작업을 단순화하고 전체 개발 비용을 절감합니다.

    저장 프로시저는 실제 실행되는 비즈니스 로직 PL/SQL 블록과 여러 SQL 문을 저장 프로시저로 캡슐화합니다. 다른 개발자는 비즈니스를 다시 이해하지 않고도 원하는 결과를 얻기 위해 서면 프로시저만 호출하면 됩니다. 비즈니스를 추출하고 전문 인력이 작성하도록 하세요.

  • 데이터 독립성을 높입니다.

    그 기능은 뷰의 기능과 유사합니다. 테이블의 기본 데이터가 변경되면 호출 프로그램을 수정하지 않고 그 과정에서 코드만 수정하면 됩니다. 이렇게 하면 사용자 프로그램이 기본 데이터에 직접적으로 코드를 작성할 필요가 없습니다. 이는 코드를 더욱 응집력 있게 만들고 덜 결합되게 만듭니다.

  • 보안을 강화하세요.

    저장 프로시저를 효과적으로 사용하면 오류 가능성이 줄어듭니다. 특정 작업을 수행하기 위해 저장 프로시저를 사용하지 않는 경우 여러 개의 개별 SQL 문을 실행해야 할 수 있으며 실행 단계가 너무 많으면 오류가 발생할 확률이 높아질 수 있습니다.

  • 성능을 향상하세요.

    실제 개발 과정에서 비즈니스 모듈 기능 개발에는 문제 해결을 위해 여러 SQL 문과 여러 PL/SQL 프로그램 블록을 사용해야 할 수도 있습니다. 이를 프로시저에 기록함으로써 Oracle은 이를 한 번만 컴파일하면 되며 나중에 언제든지 호출할 수 있습니다. 프로시저를 사용하지 않고 많은 SQL 문을 프로그램에 직접 작성하는 경우 여러 번의 컴파일과 데이터베이스에 대한 여러 연결이 필요하므로 성능이 크게 저하됩니다.

Oracle 저장 프로시저 구문 생성:

create [or replace] procedure 过程名
( p1 in|out datatype,
  p2 in|out datatype,
  ...
  pn in|out datatype
    
) is 
    
    ....--声明部分
    begin
    
    ....--过程体
    end;

문법 분석:

1 프로시저 키워드는 저장 프로시저를 생성하는 명령입니다.

2. 생성 [또는 교체]: 저장 프로시저가 이미 존재하는 경우 원래 프로시저를 덮어쓰고 교체합니다.

3. in|out: 저장 프로시저에는 입력 매개변수와 출력 매개변수라는 두 가지 매개변수 옵션이 있습니다. in은 입력 매개변수를 나타내고, out은 프로세스를 사용할 때 전달되는 해당 변수가 있어야 합니다. 입력 및 출력 매개변수에는 수신할 해당 변수가 있어야 합니다.

4. 데이터 유형은 들어오고 나가는 매개변수 변수에 해당하는 데이터 유형을 나타냅니다.

5. 다음에는 프로세스에 사용되는 선언된 변수가 옵니다.

6. Begin...end는 저장 프로시저의 특정 작업 중간에 작성됩니다.

예제 1. 수업 중 특정 강좌의 학생 순위를 계산하는 저장 프로시저를 만듭니다. 저장 프로시저를 사용하여 해당 순위를 계산하고 반환하는 코드는 다음과 같습니다.

create or replace procedure sp_score_pm(
p_in_stuid in varchar2,--学号
p_in_courseid in  varchar2, --课程ID
p_out_pm out number--排名
)
is
ls_score number:=0;
ls_pm number:=0;
begin
  --获取该学生的成绩
  select t.score into ls_score from score t
   where t.stuid = p_in_stuid
     and t.courseid = p_in_courseid;
  --获取成绩比该学生高的人数
  select count(1) into ls_pm from score t
   where t.courseid = p_in_courseid
   and  t.score>ls_score;
   --得到该学生的成绩排名
   p_out_pm:=ls_pm+1;
exception
  when no_data_found  then
     dbms_output.put_line('该学生的课程:'||p_in_courseid|| '的成绩在成绩表中找不到');
end;

위 코드를 통해 SQL 창을 직접 사용할 수 있습니다. 컴파일이 성공한 후 저장 프로시저를 호출하여 학생의 해당 강좌 성적 순위를 얻을 수 있습니다. 저장 프로시저에는 들어오고 나가는 매개변수 할당이 필요하므로 이를 통해 테스트할 수 있습니다. PL/SQL 문 블록 코드는 다음과 같습니다.

declare
ls_pm number;--排名
begin
  --SC201801001
  sp_score_pm('SC201801001','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801001','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180102 的成绩排名是:'||ls_pm);
  --SC201801002
  sp_score_pm('SC201801002','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801002','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180102 的成绩排名是:'||ls_pm);
  
end;

결과는 다음과 같습니다.

Oracle 저장 프로시저의 기능은 무엇입니까?

추천 튜토리얼: "Oracle Tutorial"

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.