Oracleのストアドプロシージャを使用しました

まず、ストアドプロシージャは何ですか。
      ストアドプロシージャ(ストアドプロシージャ)貯蔵後にコンパイルされたデータベースにSQL文の特定のセットを完了するための関数のセットです。ユーザによって指定され、ストアドプロシージャのパラメータはそれを実行するために与える名(もしパラメータを持つストアドプロシージャ)。ストアドプロシージャは、任意の適切に設計されたデータベース・アプリケーションは、ストアドプロシージャを使用する必要があり、データベース内の重要な課題です。
      ストアドプロシージャは、SQL文で書かれたアプリケーションが呼び出すだけで使用することができ、データベースサーバにストレージをコンパイルし、最適化した後に制御プロセスを流れています。ORACLEでは、関連するプロセスの複数のパッケージを形成するために一緒に組み合わされてもよいです。次のような利点:
   1.ストアド・プロシージャおよび関数は、データベースに格納されているデータベース・オブジェクトに名前を付けることができます。コードはローカルに格納されていないため、データベースに保存されている利点は、明白である、ユーザーがクライアント上の任意のデータベースにログオンして、コードを呼び出したり、修正することができます。
  2.ストアド・プロシージャおよび関数は、ストアド・プロシージャおよび関数を使用するために、ストアドプロシージャおよび関数の所有者からの許可を持っている必要があり、データベースのセキュリティを保証することによって提供することができ、使用者または作成者は、ストアド・プロシージャまたは関数呼び出しを実行するために自身を承認しました。
  3.情報ストアド・プロシージャおよび関数は、データ・ディクショナリに書かれているので、ストアドプロシージャが共通モジュールとして見ることができ、ユーザー作成PL / SQLストアド・プロシージャまたは他のプログラムがそれを呼び出すことができる(ただし、ストアド・プロシージャおよび関数PLを呼び出すことはできません/ SQLプログラム)。再使用可能な機能は、ストアドプロシージャとして設計することができます。
  4.手順および他の高レベルの言語のような関数のように、ストアドプロシージャや関数を渡すパラメータを渡すことができ、パラメータもさまざまな方法があります。ストアドプロシージャを使用して、戻り値を持つことができない、戻り値を持つことができ、ストアドプロシージャパラメータの戻り値が戻されなければならない。この関数は、他の標準機能と同様に、我々は関数名の関数値を呼び出すことによって返すことができ、特定のデータ型を持っています。
  5.ストアドプロシージャと関数は、それが唯一のコンパイラによって呼び出すことができ、構文エラーを排除するためにコンパイルする必要があります。
 
第二に、ストアドプロシージャを作成します。
ストアドプロシージャ名を作成する[または交換] [(入力および出力パラメータ、イン/アウトパラメータ)]  
AS /あります  
ベギン  
  文章;  
    [例外  
     文章;]  
ストアドプロシージャ名を終了します。  
 
[実施例1 ] パラメータを取らないストアドプロシージャ。
SQL> serveroutputをオンに設定
SQL>プロシージャpro_no_parを作成または交換です
  2開始
  3アップデートEMPセットSAL = SAL + ID = 3 800。
  4コミット;
  5 DBMS_OUTPUT.PUT_LINE( '給与が調整された!!');
  6 pro_no_par端;
  7 /
 
SQL> pro_no_parを実行します。
    賃金が調整されました!!
PL / SQLプロシージャが正常に完了しました。
 
 [実施例2 ] パラメータでプロセスモデルに格納されている(:、位置によって渡さ;混合モード配信名が通過モード、3つのパラメータが存在します
 
SQL> serveroutputをオンに設定
SQL>プロシージャpro_in_parを作成したり、交換してください
  NVARCHAR2 2(VAR_1、
  数3 VAR_2)されています
  4開始
  5更新EMPセットSAL = SAL + VAR_2 ENAME = VAR_1。
  6コミット;
  7 DBMS_OUTPUT.PUT_LINE(VAR_1 || || VAR_2 || 'ドルを!' '賃金が上昇してきました');
  8エンドpro_in_par。
          9 /
       
      SQL> pro_in_par( 'スミス'、1500)を実行します。
     スミスの給料は1500元増加しています!
 
 
  【例3一个带out模式和in out模式参数存储过程
          
SQL> create or replace procedure pro_out_par
  2  (var_1 in out number,
  3   var_2 out emp.ename%type,
  4   var_3 out emp.sal%type) is
  5  begin
  6   select ename,sal into var_2,var_3 from emp where id=var_1;
  7  end pro_out_par;
  8  /
 
SQL>set serveroutput on
SQL>declare
  2 ex_var_1 number;
  3 ex_var_2 emp.ename%type;
  4 ex_var_3 emp.sal%type;
  5 begin
  6   ex_var_1:=8;
  7   pro_out_par(ex_var_1,ex_var_2,ex_var_3);
  8   dbms_output.put_line('员工号为'||ex_var_1||'的员工姓名是:'||ex_var_2||'工资是:'||ex_var_3);
  9 end;
 10  /
 
    员工号为8的员工姓名是:周瑜工资是:8500
 
三、存储过程参数说明:三种形式的参数
         1. IN 定义一个输入参数变量,用于传递参数给存储过程
       2. OUT 定义一个输出参数变量,用于从存储过程获取数据
       3. IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
 
四、 删除存储过程
 
              DROP PROCEDURE 存储过程名;
      例如: 
             SQL> drop procedure pro_no_par;
             过程已删除。
 
 

おすすめ

転載: www.cnblogs.com/lone5wolf/p/11520523.html