プログラマーとして、Oracleは複雑なSQLの書き方を知らないので、PL / SQLは学ぶ価値があります

この記事では主にPL / SQL言語について説明します。注意深く勉強していない人は、これはOracleクライアントではないと思うでしょう。これはそうではありません。手続き型プログラミング言語です。その関数はSQLに基づいています。 SQL文を含むプログラム。それが必要な友達は、編集者と一緒に勉強しましょう。

個人的には、PL / SQL言語が特に便利だと感じています。通常のSQLでは解決できない多くの問題に遭遇しました。あなたがそれに遭遇したかどうかはわかりません。

PL / SQLの概要

PL / SQLは手続き型言語です。PL/ SQLでは、ループはIFステートメントまたはLOOPステートメントを介して実現でき、変数も定義できます。これは、バックエンドコードと非常によく似ています。

通常のSQLステートメント(DMLステートメントやDQLステートメントなど)と同様に、フロー制御や変数はありません。もちろん、PL / SQLを使用すると、通常のSQLを内部にネストでき、SQL文と連携して、純粋なSQLでは完了できない文法を完成させることができます。

開発では、通常、複雑な履歴データを処理するか、プログラムの最適化に使用します。

PL / SQLブロック構造

PL / SQLプログラムはすべてブロックに基づいており、PL / SQLブロック全体が3つの部分に分かれています。

declare
  --声明部分,不定义变量的情况下可以省略declare
begin
  --执行部分,必须
exception
  --异常处理部分,可选可不选
end;

宣言部分(宣言で始まる)

宣言部分はdeclareで始まり、beginで終わります。その間に、変数、定数、カーソルなどを書き込むために使用できます。

実行部分(開始から開始)

実行部分はキーワードBEGINで始まります。コードに例外がある場合は、実行が完了すると例外処理が終了します。例外がない場合は、キーワードENDで終わります。論理制御と操作はこの部分に記述されます。複数のPL / SQL文とSQL文を書くことができます。

例外処理部分(例外から始まる)

例外処理部分は例外で始まります。このキーワードを実行すると、PL / SQLブロック全体が終了します。PL/ SQLコード(メイン実行部分)の実行中に、次のような予期しないエラーが発生する場合があります。除数0、null値が計算に関与するなど、これらのエラーによりプログラムが中断されます。この部分でいくつかの例外処理を実行できます。エラーが報告されると、エラーメッセージが表示されるため、原因が発生します。エラーの原因をすばやく特定できます。WHEN THENステートメントを使用して、IFと同様にブランチの判断を実現し、各ブランチで例外を処理するコードを記述できます。

実行開始部分は必須であり、他の2つの部分はオプションです。

注:各ステートメントはセミコロンで終了する必要があります。複数行で書き込むこともできますが、セミコロンで終了することもできます。

PL / SQLをすばやく作成する方法

私はplsqldevクライアントを使用しています。もちろん、作成されたクライアントには例外処理がないため、自分で追加するだけです。
このTestwindouは、PL / SQLの作成に専念しており、デバッグもサポートしています。

彼のステートメントは通常のSQLウィンドウでも実行できますが、デバッグや学習にはこのウィンドウを使用することをお勧めします。印刷された値はDBMSウィンドウから表示できます。

ここに画像の説明を挿入します

PL / SQLの簡単なコード例

この例には、ループ、トラバーサル、変数の割り当て、出力ステートメント、例外処理など、一般的に使用されるいくつかの例が含まれます。まったく触れていない人にとっては、少しかわいく見えるかもしれません。このコードをクライアントに直接コピーして学ぶことができます。

-- Created on 2020/12/17 by GUO 
declare
  i int := 3; --声明一个变量i = 3
  c number;
begin
  --定义一个循环,当i大于-2的时候退出循环
  while i > -2 loop
    i := i - 1; --等同于 i = i--
    c := i / i; --c = i除i ,也就是i终究会有等于0的时候
    dbms_output.put_line(c);
  end loop;
exception
  WHEN zero_divide then
    dbms_output.put_line('除数不能为零!');
end;

演算結果:

ここから、dbms_output.put_lineによって出力された値を確認できます。

理論的には、ループを終了するために> -2を書き込んだため、彼は再び1を出力する必要がありますが、0に等しい場合、0による除算はエラーとして報告されているため、実行部分は直接終了し、例外処理はスキップされます。

ここに画像の説明を挿入します

文法的に注意を払う必要があります

1.コメントには通常-(2本の横棒)を使用しますが、1行を超える場合は、各行の先頭に適用する必要があります
- (コネクタ)2。複数行のコメントは/ *で始まり、で終わることができます* /
3.定義変数、各行は1つの変数または定数のみを定義できます
。4。変数を定義します。名前は(AZ、az)で始まる必要があり、最大長は30です。他の文字で始まる場合は、二重引用符で囲みます。
5.変数を定義します名前は次のとおりです。AZ、az、0-9、_、$、#を使用できます。他の文字で始める場合は、二重引用符で展開する必要があります。6。
変数を定義します。名前には、select updateなどのキーワードを使用できません。これらのキーワードを使用する場合、名前付けは二重引用符で囲む必要があります。
7.変数の割り当てと文字列のテキストの割り当ては、一重引用符で囲む必要があります。
8. oracle 10g以降、文字列に一重引用符が含まれている場合は、[]、{}、<>を使用して変数に値を割り当てることもできます。次に、区切り文字の前後に一重引用符を追加するだけでなく、プレフィックスにqを追加する必要があります。例:

A:= q'[iwdwad]';

記事の概要

この記事では、PL / SQLの機能とその機能についての予備的な理解しか得られません。フォローアップでは、PL / SQLの変数やカーソルなどの機能を要約する時間を見つけようとします。

これらは、昨日整理したPL / SQLでサポートされている3つのループです。ディープラーニングが必要な場合は、この記事をもう一度読むことができます。

PL / SQLサイクル:https//blog.csdn.net/weixin_43888891/article/details/111305170

おすすめ

転載: blog.csdn.net/weixin_43888891/article/details/111318866