PREPARATION
受験対策

Silverの例題解説
「S3.1 SQL コマンド(関数定義 / プロシージャ定義)」

「S3 開発/SQL - S3.1 SQL コマンド(関数定義 / プロシージャ定義)」からの出題です。

例題

3.141

以下のコマンドでテーブルと関数を定義した。

create table testa(id integer primary key, val varchar) ;
create function testfunc(x integer) returns varchar language sql as $$
select val from testa where id = x $$ ;

次のSELECT文を実行するために必要な権限として最も適切なものを選びなさい。

select testfunc(1);

  1. 特に制限はなく、どのユーザでも実行できる。
  2. 関数testfuncの所有者のみが実行できる。
  3. 関数testfuncのEXECUTE権限がGRANTされていれば実行できる。
  4. テーブルtestaのSELECT権限がGRANTされていれば実行できる。
  5. 関数testfuncのEXECUTE権限とテーブルtestaのSELECT権限の両方がGRANTされている必要がある。

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

解答と解説

PostgreSQLではSQL、PL/pgSQLをはじめ、さまざまな言語で関数を定義することができます。例題はSQLで関数を定義しています。
関数を実行するには、その関数の実行権限、つまりEXECUTEがGRANTされている必要があります。

また関数は、その所有者とは関係なく、実行者の権限で実行されます。そのため、関数がテーブルなどのオブジェクトにアクセスする場合には、そのオブジェクトに関する適切なアクセス権限が必要になります。例題の関数はテーブルtestaに対するSELECTだけを実行しているので、testaのSELECTもGRANTされている必要があります。

従って正解はEです。

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

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

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

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

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

サンプル問題/例題解説

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

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

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

無料技術解説セミナー

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

OSS-DB道場

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