>  기사  >  데이터 베이스  >  Oracle 저장 프로시저의 기본 구조에는 무엇이 포함됩니까?

Oracle 저장 프로시저의 기본 구조에는 무엇이 포함됩니까?

青灯夜游
青灯夜游원래의
2022-03-02 16:52:153935검색

Oracle 저장 프로시저의 구조는 1. 프로세스 선언, 2. 실행 프로세스 부분, 3. 저장 프로시저 예외로 구성됩니다. 스크립트의 내결함성과 편의성을 높이려면 이 부분을 생략할 수 있습니다. 디버깅, 예외 작성.

Oracle 저장 프로시저의 기본 구조에는 무엇이 포함됩니까?

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

저장 프로시저란 무엇입니까

저장 프로시저: 바이두 백과사전에서는 이렇게 설명합니다. 저장 프로시저(Stored Procedure)는 대규모 데이터베이스 시스템에서 특정 기능을 완료하기 위한 일련의 SQL 문으로 데이터베이스에 저장됩니다. , 첫 번째 컴파일 후 다시 호출할 때 다시 컴파일할 필요가 없습니다. 사용자는 저장 프로시저의 이름을 지정하고 매개변수(저장 프로시저에 매개변수가 있는 경우)를 제공하여 저장 프로시저를 호출합니다.

간단히 말하면, 구체적으로 한 가지 일을 하는 SQL 문입니다.

데이터베이스 자체에서 호출할 수도 있고 Java 프로그램에서 호출할 수도 있습니다.

저장 프로시저는 Oracle 데이터베이스의 프로시저입니다.

저장 프로시저 구조

(1) 기본 구조

Oracle 저장 프로시저는 세 부분으로 구성됩니다: 프로세스 선언, 실행 프로세스 부분, 저장 프로시저 예외(쓰기 가능 여부, 스크립트의 내결함성 강화) 및 디버깅 편의를 위해 예외 처리 작성)

(2) 매개변수가 없는 저장 프로시저

/**
name_procedure就是自己自定义的存储过程名
*/
create or replace procedure name_procedure AS/IS
	变量名1  数据类型;
	变量名2  数据类型;
BEGIN
	--要处理的业务逻辑
	EXCEPTION    --存储过程异常
END name_procedure;

(3) 매개변수가 있는 저장 프로시저

일반 매개변수 저장 프로시저

/*
age 类型为number 初始化为20;
*/
CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE)
AS/IS
name varchar(20);
age number :=20;
BEGIN
  --业务处理.....
END ;

매개변수가 있는 저장 프로시저 및 수행 할당

CREATE OR REPLACE PROCEDURE 存储过程名称(
       s_no in varchar,
       s_name out varchar,
       s_age number) AS
total NUMBER := 0;
BEGIN
  SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;
  dbms_output.put_line('符合该年龄的学生有'||total||'人');
  EXCEPTION
    WHEN too_many_rows THEN 
    DBMS_OUTPUT.PUT_LINE('返回值多于1行'); 
END

IN 매개변수는 입력 매개변수를 나타내며 매개변수의 기본 모드입니다.

  • OUT은 반환 값 매개 변수를 나타내며 해당 유형은 Oracle에서 합법적인 모든 유형을 사용할 수 있습니다.

  • OUT 모드에서 정의된 매개변수는 프로세스 본문 내부에서만 값을 할당할 수 있습니다. 즉, 매개변수가 이를 호출한 프로세스에 특정 값을 다시 전달할 수 있음을 의미합니다.

  • IN OUT은 매개변수가 프로세스에 값을 전달할 수도 있고 특정 값을 밖으로 전달할 수도 있습니다.

7행: s_age 매개변수를 필터 조건으로 사용하고 INTO 키워드를 사용하여 찾은 결과를 total 변수에 할당하는 쿼리 문입니다.

라인 8: 출력 쿼리 결과, "||"는 데이터베이스의 문자열을 연결하는 데 사용됩니다.

라인 9-11: 예외 처리 수행

저장 프로시저 구문

(1) 연산자

Oracle 저장 프로시저의 기본 구조에는 무엇이 포함됩니까?

(2) SELECT INTO STATEMENT 문

  • 쿼리 결과를 하나의 변수 또는 여러 변수에 할당

요구 사항: 100점으로 학생의 이름, 나이, 이름을 알아냅니다. . 출생지

CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS
s_name VARCHAR2;   --学生名称
s_age NUMBER;      --学生年龄
s_address VARCHAR2; --学生籍贯
BEGIN
  --给单个变量赋值
  SELECT student_address INTO s_address
  FROM student where student_grade=100;
   --给多个变量赋值
  SELECT student_name,student_age INTO s_name,s_age
  FROM student where student_grade=100;
  --输出成绩为100分的那个学生信息
  dbms_output.put_line('姓名:'||s_name||',年龄:'||s_age||',籍贯:'||s_address);
END

(3) Select 문

//if 后面一定要添加THEN 相当于Java中的 大括号
IF s_sex=1 THEN
  dbms_output.put_line('这个学生是男生');
ELSE IF THEN
  dbms_output.put_line('这个学生是女生');
ELSE
  dbms_output.put_line('这个学生性别错误');
END IF

(4) 루프 문

a.Basic loop

LOOP
  IF 表达式 THEN
    EXIT;
  END IF
END LOOP;

b.while loop

WHILE 表达式 LOOP
  dbms_output.put_line('haha');
END LOOP;

c.for loop

//a 1 到 20 范围
FOR a in 10 .. 20 LOOP
  dbms_output.put_line('value of a: ' || a);
END LOOP;

추천 튜토리얼: "오라클 튜토리얼

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

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