Oracle ストアド プロシージャの構造は、1. 処理宣言、2. 実行処理部分、3. ストアド プロシージャ例外の 3 つの部分で構成されますが、スクリプトのフォールト トレランスを強化する場合、およびストアド プロシージャの例外部分は省略できます。例外処理を記述するだけでデバッグが容易になります。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
ストアド プロシージャとは何ですか?
ストアド プロシージャ: Baidu Encyclopedia で説明されています。ストアド プロシージャ (Stored Procedure) は大規模なデータベース システムで使用されます。 , 特定の関数を完了するための SQL ステートメントのセットがデータベースに保存されます。最初のコンパイル後、再度呼び出すときに再度コンパイルする必要はありません。ユーザーはストアド プロシージャの名前を指定し、パラメータを指定します (ストアド プロシージャの場合は、プロシージャにはパラメータがあります) ) を使用してストアド プロシージャを呼び出します。
簡単に言うと、これは 1 つのことを具体的に実行する SQL ステートメントです。
データベース自体または Java プログラムによって呼び出すことができます。
Oracle データベースのストアド プロシージャはプロシージャです。
ストアド プロシージャの構造
(1) 基本構造
Oracle ストアド プロシージャには 3 つの部分が含まれます:処理宣言、実行処理部分、ストアドプロシージャ例外(記述してもしなくてもよい、スクリプトのフォールトトレランスやデバッグの利便性向上のため、例外処理を記述する)
(2) No-パラメータ ストレージ プロシージャ
/** 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 の任意の有効な型を使用できます。
ストアド プロシージャの構文
(1)演算子
(2) SELECT INTO STATEMENTステートメント
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.基本ループ
LOOP IF 表达式 THEN EXIT; END IF END LOOP;b.while ループ
WHILE 表达式 LOOP dbms_output.put_line('haha'); END LOOP;c.for ループ
//a 1 到 20 范围 FOR a in 10 .. 20 LOOP dbms_output.put_line('value of a: ' || a); END LOOP;推奨チュートリアル: 「
Oracle チュートリアル
」以上がOracle ストアド プロシージャの基本構造には何が含まれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。