oraceストレージ・プロシージャの概要小DEMO

2027 ワード

Oracleのストレージ・プロシージャやトリガなどを学び始めたばかりで、ブログ・フォーラムでまとめられた知識点もいくつか見ました!
いくつかの比較的に良い文章の断片を取って、後で勉強して強固にするために持ってきました!
大規模なデータベース・システムでは、ストレージ・プロシージャとトリガの2つの重要な機能があります.データベース・システムでは、ストレージ・プロシージャとトリガのどちらでも、SQL文と制御プロセス文のセットによって実行されます.対照的に、データベース・システムのトリガもストレージ・プロシージャです.ストレージ・プロシージャは、データベース内の演算時に各種の実行方式を自動的に生成するため、その実行時の実行速度を大幅に向上させる.Oracle、SQL Serverなどの大規模なデータベース・システムでは、ユーザーがストレージ・プロシージャをカスタマイズする機能だけでなく、ツールとして呼び出すことができる多くのシステムに独自のストレージ・プロシージャが用意されています.
ストアド・プロシージャ(Stored Procedure)とは、コンパイルされてデータベース・システムに格納される特定のデータベース機能を完了するためのSQL文セットのことです.使用時に、ユーザーは定義されたストレージ・プロシージャの名前を指定し、対応するストレージ・プロシージャ・パラメータを指定して呼び出し、実行することで、1つまたは複数のデータベース・オペレーションを完了します.
基本的な使い方:
1.基本構造CREATE OR REPLACE PROSCEDUREストレージプロセス名(パラメータ1 IN NUMBER、パラメータ2 IN NUMBER)AS変数1 INTEGER:=0;変数2 DATE;BEGIN
ENDストアド・プロシージャ名2.SELECT INTO STATEMENTはselectクエリの結果を変数に格納し、同時に複数の列に複数の変数を格納することができ、1つのレコードが必要である.そうしないと、異常を放出する(NO_DATA_FOUNDを放出する記録がない場合)例:BEGIN SELECT col 1、col 2 into変数1、変数2 FROM typestruct where xxx;  EXCEPTION   WHEN NO_DATA_FOUND THEN       xxxx;   END;   ... 3.IF判定IF V_TEST=1 THEN     BEGIN        do something     END;   END IF; 4.whileサイクルWHILE V_TEST=1 LOOP   BEGIN  XXXX   END;   END LOOP; 5.変数付与V_TEST := 123; 6.for inでcursorを使う...  IS   CURSOR cur IS SELECT * FROM xxx;   BEGIN  FOR cur_result in cur LOOP   BEGIN    V_SUM :=cur_result.カラム名1+cur_result.列名2 END; END LOOP;   END; 7.パラメータ付きcursor CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;   OPEN C_USER(変数値);  LOOP  FETCH C_USER INTO V_NAME;  EXIT FETCH C_USER%NOTFOUND;     do something   END LOOP;   CLOSE C_USER; 8.pl/sql developer debugでデータベースに接続した後、Test WINDOWがウィンドウにSPを呼び出すコードを入力することを確立し、F 9はdebugを開始し、CTRL+N単一ステップデバッグ
 
createorreplaceprocedure CountSum(Ver in  char)

as

cnt number;

 begin

   select count(*) into cnt  from T_BANKNOTE where version=Ver;

    DBMS_OUTPUT.PUT_LINE('   2   :'||cnt);

end CountSum;