Oracle 저장 프로시저의 구조는 1. 프로세스 선언, 2. 실행 프로세스 부분, 3. 저장 프로시저 예외로 구성됩니다. 스크립트의 내결함성과 편의성을 높이려면 이 부분을 생략할 수 있습니다. 디버깅, 예외 작성.
이 튜토리얼의 운영 환경: 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) 연산자
(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!