PREPARATION
受験対策

Silverの例題解説
「S3.1 SQL コマンド(PL/pgSQL)」

「S3 開発/SQL - S3.1 SQL コマンド(PL/pgSQL)」からの出題です。

例題

3.142

以下を実行してストアドプログラムを定義した。

create function sample_func(x integer) returns integer as $$
declare
begin
  raise info 'Hello World!';
  return x * 2;
end;
$$ language plpgsql;

定義されたプログラムについて適切な説明を3つ選びなさい。


  1. 実行するには、例えば call sample_func(10) などとすれば良い。
  2. 実行するには、例えば select sample_func(10) などとすれば良い。
  3. 端末から実行すると、画面に Hello World! と表示される。
  4. sample_func(10) は値として20を返す。
  5. 実行すると例外が発生して異常終了する。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2022年8月31日

解答と解説

PostgreSQLではPL/pgSQLなどの手続き言語やSQLを使って関数やプロシージャをストアドプログラムとして定義できます。例題はsample_funcという名前のinteger型の関数をPL/pgSQLで定義しています。

ストアドプログラムには、値を返す関数(FUNCTION)と、値を返さないプロシージャ(PROCEDURE)があります(厳密には、値を返さないVOID型の関数もあります)が、使い方の最大の違いは、関数はSELECTなどのSQLで値を要求する場所で使うのに対し、プロシージャはCALLコマンドで実行する、というところです。例題は関数なので、SELECTなどから実行できます。

PL/pgSQLのプログラムは、変数などを定義するDECLAREが先頭にあり、BEGINの後が実行部分、ENDで終わります。例題では、RAISEとRETURNの2つを実行しています。

RAISEはメッセージを表示したり、エラーを報告したりするのに使われるコマンドで、プログラムのデバッグなどに使用できます。infoは画面にメッセージを表示することを指示しています。infoの代わりにexceptionとすると、例外が発生して終了します。

RETURNはこの関数の戻り値として返す値を指定します。sample_func(10) で呼び出すと、xには10が入りますから、x*2、つまり20が返されます。

従って正解はB、C、Dです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システム、AIなどの
新領域での「PostgreSQL」の採用が拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定です

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。