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 VARCHAR2(20 ); 始める - この文の解釈を、従業員の名前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 VARCHAR(20 ); 始める 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)。 エンド ;