65 PL/SQL 面接の質問と回答 (2025)
新人向けの PL/SQL 面接の質問と回答
1) PL SQL とは何ですか?
Oracle PL/SQL は SQL 言語の拡張機能であり、SQL のデータ操作能力と手続き型言語の処理能力を組み合わせて、非常に強力な SQL クエリを作成します。 PL/SQL は、データベースのセキュリティ、移植性、堅牢性を強化することにより、SQL 文のシームレスな処理を保証します。
PL/SQL は、「構造化照会言語の手続き型言語拡張」の略です。
👉 無料 PDF ダウンロード: PL/SQL インタビューの質問と回答
2) % ROWTYPE と TYPE RECORD を区別します。
% 行タイプ クエリがテーブルまたはビューの行全体を返す場合に使用されます。
タイプレコード 一方、クエリが異なるテーブルまたはビューの列を返す場合に使用されます。
例えば。 TYPE r_emp は 記録 (sno smp.smpno%type,sname smp sname %type)
e_rec smp %行タイプ
カーソル c1 は、smp からの select smpno,dept です。
e_rec c1 %行タイプ
3) カーソルの使い方を説明します。
カーソルは、情報にアクセスできる SQL の名前付きプライベート領域です。 複数の行を返すクエリでは、各行を個別に処理する必要があります。
4) カーソル for ループのコードを表示します。
カーソルは、ループ インデックスとして %ROWTYPE を暗黙的に宣言します。次に、カーソルを開き、レコードのフィールドのアクティブ セットから値の行を取得し、すべてのレコードが処理されたら終了します。
例えば。
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) データベーストリガーの使い方を説明します。
特定のデータベース表に関連付けられたPL/SQLプログラム・ユニットは、データベース・トリガーと呼ばれます。 用途:
1) データの変更を監査します。
2) イベントを透過的にログに記録します。
3) 複雑なビジネスルールを適用します。
4) レプリカテーブルを保守する
5) 列の値を導出する
6) 複雑なセキュリティ認証を実装する
6) XNUMX 種類の例外とは何ですか。
PL/SQLブロックのエラー処理部分は例外と呼ばれます。 ユーザー定義と事前定義の XNUMX つのタイプがあります。
7) いくつかの事前定義された例外を表示します。
DUP_VAL_ON_INDEX
ZERO_DIVIDE
何もデータが見つかりませんでした
TOO_MANY_ROWS
CURSOR_ALREADY_OPEN
無効な番号
INVALID_CURSOR
プログラムエラー
タイムアウト_ON_RESOURCE
ストレージエラー
ログオン_拒否
VALUE_ERROR
等々
8) Raise_application_error について説明します。
これは、データベース トリガーまたはストアド サブプログラムからユーザー定義のエラー メッセージを発行できるようにする DBMS_STANDARD パッケージのプロシージャです。
9) PL SQL ブロックで関数とプロシージャがどのように呼び出されるかを示します。
関数は式の一部として呼び出されます。
total:=calculate_sal('b644')
プロシージャはステートメントとして呼び出されます PL / SQLの.
calculate_bonus('b644');
10) データベーストリガー実行時に利用できる XNUMX つの仮想テーブルについて説明します。
テーブルの列は、OLD.column_name および NEW.column_name として参照されます。
INSERT 関連のトリガーの場合、NEW.column_name 値のみが使用可能です。
DELETE 関連のトリガーの場合、OLD.column_name 値のみが使用可能です。
UPDATE 関連のトリガーでは、両方のテーブル列を使用できます。
11) 比較中に NULL に適用されるルールは何ですか?
1) NULL が TRUE または FALSE になることはありません
2) NULL は他の値と等しくても等しくてもなりません
3) 式内の値がNULLの場合、連結演算子(||)を除いて、式自体はNULLと評価されます。
12) PL SQL のプロセスはどのようにコンパイルされますか?
コンパイルプロセスには、構文チェック、バインド、および P コード生成プロセスが含まれます。
構文チェックでは、PL SQL コードにコンパイル エラーがないかチェックします。 すべてのエラーが修正されると、データを保持する変数に格納アドレスが割り当てられます。 それはバインディングと呼ばれます。 P コードは、PL SQL エンジンの命令のリストです。 P コードは名前付きブロックのデータベースに保存され、次回の実行時に使用されます。
13) 構文エラーと実行時エラーを区別します。
構文エラーは、PL/SQL コンパイラによって簡単に検出できます。 たとえば、スペルが間違っているなどです。
実行時エラーは、例外処理セクションの助けを借りて処理されます。 PL/SQLブロック。 たとえば、行を返さない SELECT INTO ステートメントなどです。
14) コミット、ロールバック、セーブポイントについて説明します。
COMMIT ステートメントの場合、次のようになります。
- 他のユーザーは、トランザクションによって行われたデータの変更を確認できます。
- トランザクションによって取得されたロックは解放されます。
- トランザクションによって行われた作業は永続的になります。
トランザクションが終了すると ROLLBACK ステートメントが発行され、次のようになります。
- 移行中に行われた作業は、発行されなかったかのように元に戻されます。
- トランザクションによって取得されたすべてのロックが解放されます。
トランザクション内でユーザーが行ったすべての作業を元に戻します。 SAVEPOINT では、トランザクションの一部のみを元に戻すことができます。
15) 暗黙的カーソルと明示的カーソルを定義します。
カーソルはデフォルトでは暗黙的です。 ユーザーは、このカーソル内の情報を制御または処理することはできません。
クエリが複数行のデータを返す場合、プログラムは明示カーソルを定義します。 これにより、アプリケーションはカーソルが返す各行を順番に処理できるようになります。
16) 変更テーブルエラーについて説明します。
これは、トリガーが現在使用している行を更新しようとしたときに発生します。 これはビューまたは一時テーブルを使用することで修正されるため、データベースは一方を選択し、他方を更新します。
17) 宣言ステートメントはどのような場合に必要ですか?
DECLARE 文は、スタンドアロンの非ストアド プロシージャなどの PL SQL 匿名ブロックによって使用されます。 これを使用する場合は、スタンドアロン ファイルの最初に指定する必要があります。
18) テーブルに適用できるトリガーはいくつですか?
12 つのテーブルに最大 XNUMX 個のトリガーを適用できます。
19) SQLCODE と SQLERRM の重要性は何ですか?
SQLCODE は最後に発生したエラーのエラー数の値を返しますが、SQLERRM は最後のエラーのメッセージを返します。
20) カーソルが開いている場合、PL SQL ブロック内でどのように検索できますか?
%ISOPEN カーソル状態変数を使用できます。
経験者向けのPL/SQL面接の質問
21) XNUMX つの PL/SQL カーソル例外を表示します。
カーソルがすでに開いています
Invaid_cursor
22) NULL を処理する演算子は何ですか?
NVL は、NULL を別の指定された値に変換します。
var:=NVL(var2,'Hi');
IS NULL と IS NOT NULL は、変数の値が NULL かどうかを具体的に確認するために使用できます。
23) SQL*Plus には PL/SQL エンジンもありますか?
いいえ、SQL*Plus には PL/SQL エンジンが組み込まれていません。 したがって、すべての PL/SQL コードはデータベース エンジンに直接送信されます。 各ステートメントが個別に削除されないため、はるかに効率的です。
24) PL SQL 開発者はどのようなパッケージを利用できますか?
DBMS_ シリーズのパッケージ (DBMS_PIPE、DBMS_DDL、DBMS_LOCK、DBMS_ALERT、DBMS_OUTPUT、DBMS_JOB、DBMS_UTILITY、DBMS_SQL、DBMS_TRANSACTION、UTL_FILE など)。
25) トリガーの 3 つの基本部分を説明します。
- トリガーとなるステートメントまたはイベント。
- 制限事項
- 行動
26) 文字機能とは何ですか?
INITCAP、UPPER、SUBSTR、LOWER、LENGTH はすべて文字関数です。 グループ関数は、個々の行ではなく、行のグループに基づいて結果を返します。 MAX、MIN、 AVG、カウントと合計。
27) TTITLE と BTITLE について説明します。
レポートのヘッダーとフッターを制御する TTITLE および BTITLE コマンド。
28) PL/SQLのカーソル属性を表示します。
%ISOPEN:
カーソルが開いているかどうかを確認します
%ROWCOUNT:
更新、削除、またはフェッチされた行の数。
%FOUND:
カーソルが行をフェッチしたかどうかを確認します。 行がフェッチされる場合は true
%NOT FOUND:
カーソルが行をフェッチしたかどうかを確認します。 行がフェッチされない場合は True です。
29) インターセクトとは何ですか?
Intersect は XNUMX つのテーブルの積であり、一致する行のみをリストします。
30) シーケンスとは何ですか?
シーケンスは、ロックのオーバーヘッドなしでシーケンス番号を生成するために使用されます。欠点は、トランザクションがロールバックされるとシーケンス番号が失われることです。
31) トリガーを挿入および削除する前と後に、列の値をどのように参照しますか?
キーワード「new.column name」を使用すると、トリガーは新しいコレクションによって列の値を参照できます。 キーワード「old.column name」を使用すると、古いコレクションごとに列値を参照できます。
32) SYSDATE キーワードと USER キーワードは何に使用されますか?
SYSDATE は、現在のサーバー システムの日付を指します。 疑似コラムです。 USER も擬似列ですが、セッションにログオンしている現在のユーザーを指します。 これらは、テーブル内で発生する変更を監視するために使用されます。
33) ROWID はクエリの実行を高速化するのにどのように役立ちますか?
ROWID は行の論理アドレスであり、物理列ではありません。 データブロック番号、ファイル番号、データブロック内の行番号で構成されます。 したがって、行を取得する際の I/O 時間が最小限に抑えられ、クエリが高速化されます。
34) データベースリンクは何に使用されますか?
データベース リンクは、さまざまなデータベース間、またはテスト、開発、運用などの異なる環境間で通信を形成するために作成されます。 データベース リンクは読み取り専用なので、他の情報にもアクセスできます。
35) カーソルをフェッチすると何をしますか?
カーソルをフェッチすると、結果セットが行ごとに読み取られます。
36) カーソルを閉じるとどうなりますか?
カーソルを閉じると、プライベート SQL 領域がクリアされ、メモリの割り当ても解除されます。
37) 制御ファイルの使用法を説明します。
バイナリファイルです。 データベースの構造を記録します。 これには、複数のログ ファイルの場所、名前、タイムスタンプが含まれます。 これらは、XNUMX つのファイルが破損した場合に情報を取得できるように、別の場所に保存できます。
38) 一貫性について説明する
整合性とは、データがコミットされるまで他のユーザーにデータが反映されず、整合性が保たれていることを示します。
39) 匿名ブロックとサブプログラムは異なります。
匿名ブロックは、サブプログラムがコンパイルされてデータベースに保存される間、どこにも保存されない名前のないブロックです。 これらは実行時にコンパイルされます。
40) DECODE と CASE は異なります。
DECODE ステートメントと CASE ステートメントは非常に似ていますが、CASE は DECODE の拡張バージョンです。 DECODE では、代わりに意思決定ステートメントを使用できません。
select decode(totalsal=12000,'high',10000,'medium') as decode_tesr from smp where smpno in (10,12,14,16);
このステートメントはエラーを返します。
CASE は PL SQL で直接使用されますが、DECODE は PL SQL で SQL を通じてのみ使用されます。
41) 自律的なトランザクションについて説明します。
自律トランザクションは、メインまたは親トランザクションから独立したトランザクションです。 別のトランザクションによって開始された場合、ネストされません。
イベント ログや監査など、自律型トランザクションを使用する状況がいくつかあります。
42) SGA と PGA を区別します。
SGA はシステム グローバル エリアを表し、PGA はプログラムまたはプロセス グローバル エリアを表します。 PGA には 10% の RAM サイズのみが割り当てられますが、SGA には 40% の RAM サイズが割り当てられます。
43) Pre_define_functions の場所はどこですか。
これらは、「関数、プロシージャ、およびパッケージ」と呼ばれる標準パッケージに保存されます。
44) PL SQL におけるポリモーフィズムについて説明します。
ポリモーフィズムは OOP の機能です。 複数の形式を持つ変数、オブジェクト、または関数を作成する機能です。 PL/SQL は、メンバー関数またはパッケージ内のプログラム単位のオーバーロードの形式でポリモーフィズムをサポートします。オーバーロードの実行中は、明確なロジックを回避する必要があります。
45) MERGE の用途は何ですか?
MERGE は、複数の DML ステートメントを XNUMX つに結合するために使用されます。
構文 : テーブル名にマージ
使用(クエリ)
on(結合条件)
一致しない場合
[挿入/更新/削除]コマンド
一致した場合
[挿入/更新/削除]コマンド
5年以上の経験を持つPL/SQL面接の質問
46) 分散データベースシステムで 2 つのクエリを同時に実行できますか?
はい、同時に実行できます。2 フェーズ コミットに基づく分散データベース システムでは、XNUMX つのクエリは常に XNUMX 番目のクエリから独立しています。
47) Raise_application_error について説明します。
これは、データベース トリガーまたはストアド サブプログラムからユーザー定義のエラー メッセージを発行できるようにするパッケージ DBMS_STANDARD のプロシージャです。
48) return文はpl/sqlでも使用できますが、outパラメータは何ですか?
Out パラメーターでは、呼び出し側プログラムで複数の値を許可します。 Out パラメータは関数では推奨されません。 複数の値が必要な場合は、関数の代わりにプロシージャを使用できます。 したがって、これらのプロシージャは Out パラメータを実行するために使用されます。
49) 日付をユリウス日付形式に変換するにはどうすればよいですか?
J フォーマット文字列を使用できます。
SQL > select to_char(to_date('29-Mar-2013','dd-mon-yyyy'),'J') をデュアルからジュリアンとして選択します。
JULIAN
50) SPOOLの説明
Spool コマンドは、SQL ステートメントの出力をファイルに出力できます。
スプール/tmp/sql_outtxt
select smp_name, smp_id from smp where dept='accounts';
スプールオフ。
51) PL/SQL パッケージが何で構成されているかについて言及してください。
PL/SQL パッケージは次のもので構成されます
- PL/SQL表およびレコードのTYPE文
- 手順と機能
- カーソル
- 変数 (テーブル、スカラー、レコードなど) と定数
- エラー番号と例外を関連付ける例外名とプラグマ
- カーソル
52) PL/SQL パッケージの利点について言及してください。
それは次のようないくつかの利点を提供します
- 強制的な情報隠蔽: データをプライベートに保つかパブリックに保つかを選択する自由を提供します
- トップダウン設計: 実際にモジュール自体を実装する前に、パッケージに隠されたコードへのインターフェイスを設計できます。
- オブジェクトの永続性: パッケージ仕様で宣言されたオブジェクトは、アプリケーション内のすべての PL/SQL オブジェクトのグローバル データのように動作します。 XNUMX つのモジュールでパッケージを変更し、その変更を別のモジュールで参照できます。
- オブジェクト指向設計: このパッケージは、パッケージ内のモジュールとデータ構造をどのように使用するかを開発者に強力に制御します。
- トランザクションの整合性の保証: 一定レベルのトランザクション整合性を提供します
- パフォーマンスの向上: この RDBMS データベースに保存されているすべてのプログラム オブジェクトの有効性を自動的に追跡し、パッケージのパフォーマンスを向上させます。
53) PL/SQL コードをトレースするさまざまな方法にはどのようなものがあるかについて言及してください。
コードのトレースは、実行時のコードのパフォーマンスを測定するための重要な手法です。 トレースには次のようなさまざまな方法があります。
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION と DBMS_MONITOR
- trcsess および tkproof ユーティリティ
54) 階層プロファイラーの機能について教えてください。
階層プロファイラは、ループホールとパフォーマンストレースの期待値との間のギャップを埋めるだけでなく、PL/SQLで行われた呼び出しをプロファイリングできます。階層プロファイラの効率には以下が含まれます。
- 独自のレポート SQL およびPL/SQL時間の消費
- PL/SQLで行われた個別のサブプログラム・コールの数と、各サブプログラム・コールに費やされた時間をレポートします。
- コマンド ライン ユーティリティを使用した HTML 形式の複数の対話型分析レポート
- 従来のプロファイラーや他のトレース ユーティリティよりも効果的
55) PLV メッセージで何ができるかについて言及してください。
PLV メッセージを使用すると、次のことが可能になります。
- PL/SQL表の指定された行に個別のテキスト・メッセージを割り当てます。
- メッセージテキストを番号で取得します
- 標準のメッセージを独自のメッセージに自動的に置き換えます Oracle 制限トグルによるエラーメッセージ
- データベーステーブルからメッセージ番号とテキストを直接バッチロードする PLV msg PL/SQL テーブル
56) PLV (PL/Vision) パッケージが提供するものについて言及してください。
- NULL 置換値
- アサーション ルーチンのセット
- その他のユーティリティ
- PL ビジョン全体で使用される定数のセット
- 事前定義されたデータ型
57) PLVprs と PLVprsps の用途について言及してください。
- PLVprs: これは、PL/SQL の文字列解析の拡張機能であり、最低レベルの文字列解析機能です。
- PLVprsps: これは、PL/SQL ソース コードを個別のアトミックに解析する最高レベルのパッケージです。作業を完了するには、他の解析パッケージに依存します。
58) 事前にPL/SQLでファイルをファイルコンテンツにコピーし、ファイルをPL/SQL表にコピーする方法を説明してください。
単一のプログラム呼び出しで – 「fcopy プロシージャ」、 あるファイルの内容全体を別のファイルにコピーできます。 ファイルの内容をPL/SQL表に直接コピーするには、プログラム「ファイル2pstab”.
59) 事前にPL/SQLで例外処理がどのように行われるかを説明してください。
例外処理PL/SQL 効果的なプラグイン PLVexc を提供します。 PLVexc は XNUMX つの異なる例外処理アクションをサポートしています。
- 処理を続行
- 記録して続行する
- 停止処理
- 記録して処理を停止する
例外が繰り返し発生する場合は、RAISE ステートメントを使用できます。
60) PL/SQL のデータベース表にログ情報を書き込むときに直面する可能性のある問題について説明しますか?
ログ情報をデータベース テーブルに書き込むときに直面する問題は、新しい行がデータベースにコミットされた後にのみ情報が利用可能になることです。PLVlog は通常エラーを追跡するために展開されるため、多くの場合、現在のトランザクションが失敗するか、ロールバックが必要になるため、これが問題になる可能性があります。
61) PL/SQL テーブルのログをデータベーステーブルに転送するために使用される関数は何ですか?
PL/SQL表ログをデータベース・ログ表関数に転送するには 「手順 ps2db」 使用されている。
62) PLVlog のデフォルトの「ロールバック」セーブポイントを使用する必要がある場合は?
PLVlog のデフォルトの「ロールバック」セーブポイントは、ユーザーがロールバック アクティビティをオンにし、put_line の呼び出しで代替セーブポイントを提供しなかった場合に使用されます。 デフォルトのセーブポイントは c none 定数に初期化されます。
63) PLVtab が PL/SQL テーブルにアクセスする最も簡単な方法と考えられるのはなぜですか?
PL/SQL表はPL/SQLの配列に最も近いもので、この表にアクセスするには、まず表の型を宣言し、次にPL/SQL表自体を宣言する必要があります。 ただし、PLVtab を使用すると、独自の PL/SQL 表タイプを定義する必要がなくなり、PL/SQL データ表へのアクセスが容易になります。
64) PL/SQL テーブルの内容を表示するときに PLVtab を使用すると何ができるかについて言及してください。
PLVtabを使用すると、PL/SQLテーブルの内容を表示するときに次のことが可能になります。
- テーブルのヘッダーを表示または非表示にする
- テーブル値の行番号を表示または非表示にする
- テーブルの各行の前にプレフィックスを表示します
65) メッセージをテーブルに保存または配置する方法を説明してください。
メッセージをテーブルに保存するには、XNUMX つの方法があります。
- への呼び出しを使用して個々のメッセージをロードします。
add_text
手続き - データベーステーブルからメッセージのセットをロードするには、
load_from_dbms
手続き
66) PL/SQL における関数「モジュール プロシージャ」の用途について言及してください。
「モジュール手続き」は、一度の手続き呼び出しで、一定のプログラム単位のコード全行を変換することができます。 モジュールには XNUMX つの引数があります
- モジュール入力
- コルイン
- Last_module_in
67) PL/SQL における PLVcmt と PLVrb の機能について言及してください。
PL/Vision は、PL/SQL アプリケーションでのトランザクション処理の管理に役立つ XNUMX つのパッケージを提供します。 PLVcmtとPLVrbです。
- PLVcmt: PLVcmtパッケージはコミット処理を扱うためのロジックと複雑さをラップします
- PLVrb: PL/SQLでアクティビティをロールバックするためのプログラム・インタフェースを提供します。
これらの面接の質問は、あなたの活力(口頭)にも役立ちます