LoginSignup
1
2

More than 1 year has passed since last update.

PL/SQLをかじってみた(1)

Last updated at Posted at 2021-09-16

業務で必要になるかもしれないのでPL/SQLについて学んでみた。
今回は基本となる3つの部と書き方と変数の定義について学んでみたよ。

使用した環境

Oracle Live SQL

PL/SQLとは

SQLを手続き型言語として拡張したプログラミング言語。
まぁ、SQLの言語+Cとかの手続き型言語を合体させて便利にさせたもの。
これがあればSQL文とif文やfor文などのプログラムが同時に書ける。
しかも、データベースの中にも入れられちゃう。すごい。

43つの部があるよ

名称 書き方 どんなことを書くのか
宣言部 DECLARE ブロック内で使用する変数などを宣言  
実行部 BEGEIN SQLによるデータ操作や手続き処理を記述
例外処理部 EXECPTION ブロック内で発生したエラー(例外)の処理を記述

ブロックの最後には必ず「END;」を記述すること。
(手続きが多言語の一つであるCOBOLでいうピリオドみたいな感じかな)

HelloWorld(プログラムでまず初めに学ぶであろう事柄)

ここでは、基本的な書き方と変数、定数について書いていくよ。

【例文】

DECLARE
  --変数と定数の宣言 
  str VARCHAR2(30) := 'Hello, world!'; --文字型
  num constant NUMBER default 100; --数値
BEGIN
  --変数と定数の内容を画面に出力
  DBMS_OUTPUT.PUT_LINE(str);
  DBMS_OUTPUT.PUT_LINE(num);
 --変数への代入
  str := 'Good Bye';
  --変数の内容を画面に出力
  DBMS_OUTPUT.PUT_LINE(str);
END;
Statement processed.
Hello, world!
100
Good Bye

できた!!!

ここでは以下のことをしているよ

  1. 変数と定数の宣言
  2. 変数と定数の内容を画面に出力
  3. 変数への代入
  4. もう一度変数の内容を画面に出力
変数と定数の宣言

変数を宣言する構文はこんな感じかな。

1. 変数のみを宣言する
   変数名 データ型;
2. 変数を宣言して初期値を代入する。
   変数名 データ型 := 値;
   変数名 データ型 default 値;
3. 変数を非NULL制約をつけて宣言(必ず代入が必要)
   変数名 データ型 not null := 値;

:=とdefaultの違いは初期値とデフォルト値くらいの違いかな?
というよりどっかの格好つけたがりがいろんな種類があった方がよくねと言って作ったとしか
大抵は:=を使えばいいんだと思う。
それと、非NULL制約をつけた場合は

DECLARE
  --変数宣言 
  str VARCHAR2(30) not null; --文字型
BEGIN
  str := 'HEllo';
  --変数の内容を画面に出力
  DBMS_OUTPUT.PUT_LINE(str);
END;
ORA-06550: line 3, column 7:
PLS-00218: a variable declared NOT NULL must have an initialization assignment 

このように、コンパイルエラーが発生するみたいだね。
(まぁ、変数を空にするなと言われているのに値を入れていない、変数を空にしているんだから当たり前か)

定数を宣言する構文はこんな感じかな。
定数とは値が定まった数と言う名前の通り、必ず初期値が必要なんだ。
宣言だけしたらエラーになるから気を付けてね。

   変数名 CONSTANT データ型 := 値;
   変数名 CONSTANT データ型 default 値;

それと、定数にした場合はもう値を書き換えられないよ。

DECLARE
  num constant NUMBER := 100; --定数
BEGIN
  num := 10;
END;
ORA-06550: line 4, column 3:
PLS-00363: expression 'NUM' cannot be used as an assignment target 

このように、コンパイルエラーが発生するみたいだね。
(まぁ、値は定まっているんでと言われているのに値を変えようとしているんだから当たり前か)

値の表示と文字の結合

んで、値の表示には

DBMS_OUTPUT.PUT_LINE(値とか数式とか);

を使うらしい。
値のほかにも数式、変数や定数なども使えるよ。
これは値の確認とかでこれからたくさん使うから必ず覚えてね。

あっ、文字列の結合は

num NUMBER default 100; --数値
DBMS_OUTPUT.PUT_LINE('数値だよ'||num);
数値だよ100

て具合に「||」を使うらしい
(&とか+じゃないんだね。sqlでも確かこうだったから同じだね)

あっ、そうそうデータ型についても話とかなきゃ。
えっと、なになに……あっ、SQLと同じなのか。じゃぁ、いっか。

よし、終り。
あとは、参考記事を確認すること。
私より1000パー分かりやすいから。

それじゃぁ、以上。
あぁ、お腹空いた。
バーイ

参考にした記事

超入門PL/SQL
ここからはじめようOracle PL/SQL入門

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2