「S3 開発/SQL - S3.1 SQL コマンド(PL/pgSQL)」からの出題です。
create function sample_func(x integer) returns integer as $$
declare
begin
raise info 'Hello World!';
return x * 2;
end;
$$ language plpgsql;
定義されたプログラムについて適切な説明を3つ選びなさい。
※この例題は実際の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事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.