Oracleの研究ノート4:PL / SQL

1. PL / SQLは何ですか?

  SQL:構造化照会言語

  PL / SQL(プロシージャ言語と構造化照会言語)言語SQL、ストアドプロシージャ言語の拡張です。これは、Java言語や他の論理プログラミングのような単純なことができます。

2.pl/sql利点?

  ブロガーから引用https://www.cnblogs.com/huyong/archive/2011/05/16/2047329.html詳細はオリジナルを見ます

  アプリケーションを実行するには、クライアント/サーバー環境を助長する1

  お客様の環境に適した2。

  3.手続き

  4.モジュラー

  5.ファイル名を指定して実行エラー処理性

  6.パッケージが構築された数を提供します

3.pl/sql使用

DECLARE - DECLARE省略されてもよい
  - 宣言部、PL / SQLを使用する変数の宣言、カーソル、ストアド・プロシージャおよび関数ローカル
開始 - プログラム部分を起動する、ブレースに相当する、省略することができない{Javaの
    - - プロセスの一部と、SQL文を実行し、プログラムの主要部
  の例外は 
     - 例外処理部(省略してもよい)
 ; - 末端に対応するプログラム部分の端部は、中括弧}を省略することができません

  PL / SQLブロックに分けることができます:

  1.無名ブロック:なし名前ステートメントブロックのみを使用すると、他のプログラムを呼び出すことができ、一度に実行することはできないが、他のプログラムから呼び出すことができません

  2.名前ブロック:名前の無名ブロックは、この名前はラベルです

  3.ルーチン:データベースに設立されたときなど、ストアド・プロシージャ、ファンクション、データベースに保存されているが、他のプログラムにそれらを呼び出すことができます。

  4.パッケージ:データベースに保存されたルーチンのセット、パッケージ内の変数、サブプログラムの定義は、他のサブプログラムまたはパッケージによって呼び出すことができますが、文は地元のサブルーチンである場合にのみ、ローカルに定義することができます地元のサブルーチンブロックにサブルーチンコール

  5.トリガー:データベース操作が発生すると、それは自動的に対応するプログラムを実行するためにイベントをトリガーします

4.識別子

  実質的に同一の要件および制限に定義されているSQL識別子でPL / SQLです。

  1.識別子名は、30文字を超えることはできません

  2.最初の文字は絵でなければなりません

  3.大文字小文字を区別しません

  図4はありません - いいえ

  予約語は、SQLではありません

  SQL命名とのデータ型についてhttps://www.cnblogs.com/huyong/archive/2011/05/10/2041951.html

例無名ブロック:

  例:従業員番号、従業員の名前を問い合わせます

DECLARE  
     v_empno ナンバー= 7369を ; - :(=)定義された変数の割り当て 
     v_ename VARCHAR220 );
 始める
       - この文の解釈を、従業員の名前v_empno変数の従業員番号のEMP表を照会し、名前が変数v_enameに入れられます
    SELECT ENAME INTO v_ename から EMP EMPNO = ; v_empno
        - 出力コマンド文字列がスプライスされる|| 
    DBMS_OUTPUT.PUT_LINE(' :従業員の名前' || ; v_ename)
 終了

 

PL / SQL変数の割り当て:

v_empno 番号= 7369

定数の割り当て:

一定のv_empnoの= 7369  - 定数は定数として表現されたキーワード

参照型の変数:

  PL / SQLでは、参照型の変数:

     コラム参照型%タイプ   

     ラインリファレンスタイプ%ROWTYPE

    レコードタイプのレコード%

    テーブル型%テーブル

例えば:

- 列基準型
DECLARE 
    v_empno emp.empno %のタイプ; - 列タイプ使用法参照テーブルの列名が一つ存在することを宣言する必要がある。 
    V_ename VARCHAR20 );
 始める
    SELECT EMPNO INTOの v_empno から EMP ENAME = ' ALLEN ' 
    DBMS_OUTPUT.PUT_LINE(' 従業員番号:' || v_empno);
 エンド; - 線参照型   のDECLARE 
    v_row用のemp %の ROWTYPE; - 行参照タイプがテーブルは、%ROWTYPEテーブル名として表される 
    v_empno
    
  

番号7):= 7369 ;
 始める
  SELECTを *  INTO v_row から EMP WHERE EMPNO = v_empnoを; 
  DBMS_OUTPUT.PUT_LINE(' 従業員名:' || v_row.ename || ' スタッフ部門:' || v_row.job);
 エンド; 

- レコードタイプ(複合データ型)
- 例えば、従業員番号、従業員情報の検索
DECLARE 
- レコードタイプを定義し、テーブル作成と同じ 
タイプemp_record_typeのは、あるレコード(
     v_empno emp.empno 、タイプの-エンドでのコンマ 
     v_enameのEMP.ENAMEのタイプの- コンマなしで最後の1 
;)

v_empのemp_record_type; - v_empレコード型変数の宣言
を開始する 
  SELECT EMPNO、ENAME INTO v_emp から EMP WHERE EMPNO = 7369を ; - クエリデータの数に注意を払うためにをエラー*が選択する場合、レコードの数に対応 
  DBMS_OUTPUT.PUT_LINE(結果:|| v_emp.v_empnoを); - 出力は直接出力v_empであるデータ出力状態なければなりません与えられた
エンド; 

- タイプのテーブル、キーのセット、レコードコレクション
- 従業員の従業員番号と情報を見つける
DECLAREを
/ * タイプのテーブルを定義し、
  データを、基本データ型、参照型のタイプ.. 
  インデックスタイプによってインデックス* / 
  タイプemp_table_type IS    EMP %の ROWTYPEの指標 によってBINARY_INTEGER; 
  v_empのemp_table_typeは、
開始
  - INTO EMP * SELECTからエラーv_emp WHERE EMPNO = 7369; 
  SELECT  *  INTO(v_emp 0から EMP EMPNO = 7369 ; 
    SELECT * INTO v_emp(1から EMP EMPNO = 7499   
   DBMS_OUTPUT.PUT_LINE(v_emp(0).empno || v_emp(0 ).ename)。
    DBMS_OUTPUT.PUT_LINE(v_emp(1).empno || v_emp(1 ).ename)。
エンド ;

 

 

 

  

  

おすすめ

転載: www.cnblogs.com/Zs-book1/p/11224874.html