Oracle ストアド プロシージャの機能は次のとおりです: 1. 複雑な操作を簡素化し、全体的な開発コストを削減します; 2. データの独立性を高めます; 3. エラーの可能性を効果的に減らし、セキュリティを向上できます; 4. パフォーマンスを向上します。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle ストアド プロシージャは、実際のデータベース開発プロセスでよく使用され、データベース開発者にとって必須のスキルとして、SQL ステートメントにおいてかけがえのない役割を果たします。いわゆるストアド プロシージャは、特定のビジネス機能を実行するためにデータベースに保存されるプログラム モジュールです。これは、1つ以上のPL/SQLコード・ブロックまたはSQL文で構成される一連のコード・ブロックです。
ストアド プロシージャの役割 (利点):
複雑な操作を簡素化し、全体的な開発コストを削減します。
ストアド プロシージャは、実際に実行されるビジネス ロジックの PL/SQL ブロックと複数の 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: ストアド プロシージャには、入力パラメータと出力パラメータという 2 つのパラメータ オプションがあります。in は入力パラメータを表し、out は出力パラメータを表します。プロセスを使用する場合、入力パラメータには対応する変数が渡され、対応する変数は送信パラメータで受信される必要があります。 4. datatype は、受信および送信パラメータ変数に対応するデータ型を示します。 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 ストアド プロシージャの機能とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。