ここではORACLE社が提供するPL/SQL言語で使える演算子まとめて紹介しています。
PL/SQLで使える演算子の一覧
PL/SQLで使える主な演算子の一覧は次の通りです。
具体的な使い方は下記にてサンプルを紹介しています。
なおPL/SQLには3項演算子は無いようです。
記号 | 内容 |
:= | 代入演算子 |
=> | 結合演算子 |
|| | 連結演算子 |
+ | 加算演算子 |
– | 減算演算子 |
* | 乗算演算子 |
/ | 除算演算子 |
= | 比較演算子(等号・等しい) |
<>,!=,~=,^= | 比較演算子(不等号・等しくない) |
< | 比較演算子(~より小さい) |
> | 比較演算子(~より大きい) |
<= | 比較演算子(~以下) |
>= | 比較演算子(~以上) |
AND | 論理演算子(かつ) |
OR | 論理演算子(または) |
NOT | 論理演算子(否定) |
PL/SQLで使える演算子の例
代入演算子
変数 := 値や文字列
DECLARE
msg VARCHAR2(30);
BEGIN
msg := 'Hello World';
DBMS_OUTPUT.PUT_LINE(msg);
END;
Hello World
PL/SQLが実行されました(51 msec.)
結合演算子
結合演算子はプログラムを呼び出すときの引数を指定するのに使います。
例えば次のような複数の引数のあるファンクションを用意します。
CREATE OR REPLACE FUNCTION func1(p1 NUMBER,p2 NUMBER)
RETURN varchar2 IS
BEGIN
IF p1*5 = p2 THEN
RETURN '〇';
END IF;
RETURN '×';
END;
このファンクションを呼び出す時に順番を指定しなかった場合は、次のケースではp1に5が、p2に1が引き渡されます。
順番を指定しない場合は、引数として書いた値の順番で渡されるからです。
BEGIN
DBMS_OUTPUT.PUT_LINE(func1(5,1));
END;
×
PL/SQLが実行されました(6 msec.)
代入演算子を使うことで、明示的にどの値をどの引数に渡すか指定することが出来ます。
次のケースではp2に5を、p1に1を設定しています。このように順不同で引数に値を指定することが出来ます。
BEGIN
DBMS_OUTPUT.PUT_LINE(func1(p2=>5,p1=>1));
END;
〇
PL/SQLが実行されました(6 msec.)
連結演算子
文字列 || 文字列
DECLARE
msg VARCHAR2(30);
BEGIN
msg := 'Hello' || 'World';
DBMS_OUTPUT.PUT_LINE(msg);
END;
HelloWorld
PL/SQLが実行されました(140 msec.)
加算演算子
値 + 値
DECLARE
num NUMBER;
BEGIN
num := 1 + 1;
DBMS_OUTPUT.PUT_LINE(num);
END;
2
PL/SQLが実行されました(21 msec.)
減算演算子
値 - 値
DECLARE
num NUMBER;
BEGIN
num := 1 - 5;
DBMS_OUTPUT.PUT_LINE(num);
END;
-4
PL/SQLが実行されました(6 msec.)
乗算演算子
値 * 値
DECLARE
num NUMBER;
BEGIN
num := 5 * 5;
DBMS_OUTPUT.PUT_LINE(num);
END;
25
PL/SQLが実行されました(22 msec.)
除算演算子
値 / 値
DECLARE
num NUMBER;
BEGIN
num := 25 / 5;
DBMS_OUTPUT.PUT_LINE(num);
END;
5
PL/SQLが実行されました(6 msec.)
比較演算子(等号・等しい)
式(値・文字列)= 式(値・文字列)
DECLARE
num NUMBER;
BEGIN
IF 1 = 1 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(6 msec.)
比較演算子(不等号・等しくない)
式(値・文字列)<> 式(値・文字列)
DECLARE
num NUMBER;
BEGIN
IF 1 <> 1 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
×
PL/SQLが実行されました(21 msec.)
比較演算子(~より小さい)
値1が値2より小さいときにTRUE、それ以外はFALSE。
値1 < 値2
DECLARE
num NUMBER;
BEGIN
IF 1 < 2 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(6 msec.)
比較演算子(~より大きい)
値1が値2より大きいときにTRUE、それ以外はFALSE。
値1 > 値2
DECLARE
num NUMBER;
BEGIN
IF 2 > 1 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(7 msec.)
比較演算子(~以下)
値1が値2より小さい、もしくは値1と値2が等しいときにTRUE、それ以外はFALSEになります。
値1 <= 値2
DECLARE
num NUMBER;
BEGIN
IF 2 <= 2 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(9 msec.)
比較演算子(~以上)
値1が値2より大きい、もしくは値1と値2が等しいときにTRUE、それ以外はFALSEになります。
値1 >= 値2
DECLARE
num NUMBER;
BEGIN
IF 2 >= 2 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(6 msec.)
論理演算子(かつ)
式1と式2の結果が共にTRUEの場合、TRUEになります。それ以外はFALSEになります。
式1 AND 式2
DECLARE
num NUMBER;
BEGIN
IF 1 = 1 AND 2 = 2 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(7 msec.)
論理演算子(または)
式1と式2の結果のいずれかがTRUEの場合、TRUEになります。それ以外はFALSEになります。
式1 OR 式2DECLARE
num NUMBER;
BEGIN
IF 1 = 3 OR 2 = 2 THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
〇
PL/SQLが実行されました(129 msec.)
論理演算子(否定)
式の結果を反転させます。式の結果がTRUEの場合はFALSEを、結果がFALSEの場合はTRUEを返します。
NOT(式)
DECLARE
num NUMBER;
BEGIN
IF NOT(1 = 1) THEN
DBMS_OUTPUT.PUT_LINE('〇');
ELSE
DBMS_OUTPUT.PUT_LINE('×');
END IF;
END;
×
PL/SQLが実行されました(7 msec.)