OraclePLSQLレコード
- PLSQLレコードは複合データ型です。これは、フィールドとしての関連データ項目のグループであり、それぞれに独自の名前とデータ型があります。
- PL / SQLレコードは、構造がデータベース表の行に似ています。レコード内の各スカラーデータ型は値を保持します。
- レコードは、任意のスカラー、PL / SQLレコード、またはPL/SQL表タイプのコンポーネントで構成されます。
- 単一のユニットとして操作できます。レコードには、必要な数のフィールドを含めることができます。
OraclePLSQLレコードを宣言する方法
( A)ユーザー定義のPLSQLレコード
DECLARE TYPE employee_record_type IS RECORD (emp_id NUMBER(10) NOT NULL, dept_no dept.deptno%TYPE, nаme varchar2(20), hire_dаte DATE := SYSDATE Last_name varchar2(20) ); employee_record employee_record_type;
(1)スカラーデータ型の場合のように、レコードの事前定義されたデータ型はありません。したがって、最初に作成してから割り当てる必要があります
(2)レコードの各フィールドには、一意の名前と特定のデータ型があります
(3)%TYPE 指定されたテーブルの列と同じタイプの変数を宣言するために使用されます。
(4)TYPEを使用します。 。 。独自のレコード・タイプを作成するためのRECORD文は、レコードのフィールドがBOOLEANなどのPL/SQL固有のタイプである必要がある場合です。 %ROWTYPEを使用すると、すべてのフィールドのデータ型がSQL型に制限されます
(5)レコード自体はPL / SQL固有のデータ型であるため、ユーザー定義のレコード型のもう1つの優れた機能は、レコード型を別のフィールドとして定義できることです。 レコードタイプ
DECLARE TYPE emp_phone IS RECORD ( Stdcode PLS_INTEGER, phn_number PLS_INTEGER, extension PLS_INTEGER ); TYPE contact_phone IS RECORD ( day_phone# emp_phone, eve_phone# emp_phone, cell_phone# emp_phone ); sales_rep contact_phone;
B)定義することもできます テーブル行タイプとして記録
DECLARE sales_data_rec apps.sales_data%ROWTYPE; |
1)これにより、テーブルまたはビューの列のコレクションに基づいてレコードを宣言できます
2)データベーステーブルで%ROWTYPEプレフィックスを使用して宣言します
3)レコード内のフィールドは、テーブルの列から名前とデータ型を取得します
C)%ROWTYPEを使用して、カーソル内のSELECTステートメントと同じ構造を持つレコードを宣言することもできます。
これは、テーブルから列のサブセットをフェッチする場合、または複数のテーブルから列をフェッチする場合に特に役立ちます。
DECLARE CURSOR emp_cur IS SELECT lastname, age,firstname FROM employees; l_employee emp_cur%ROWTYPE;
カーソルからPL/SQL変数にデータをフェッチするときは常に、そのカーソルに基づいて%ROWTYPEを使用してレコードを宣言し、そのレコードにフェッチする必要があります。このように、カーソルのSELECTリストが変更されると、レコード内のフィールドの数とタイプがそれに応じて変更され、すべてが同期されたままになります。
OraclePLSQLレコードに値を渡す方法
構文 | 使用法 |
rec_name.col_name:=value; | レコードの特定の列に値を直接割り当てるため。 |
rec_name.column_name:=value; | レコードが%ROWTYPEを使用して宣言されている場合に、レコードの特定の列に値を直接割り当てること。 |
SELECT column1、column2 INTO rec_name.col_name1、rec_name.col_name2 FROMtable_name[WHERE句]; | データベーステーブルのレコードの各フィールドに値を割り当てる。 |
SELECT * INTO record_name FROMtable_name[WHERE句]; | データベーステーブルからレコード内のすべてのフィールドに値を割り当てる。 |
variable_name:=record_name.col_name; | レコード列から値を取得し、それを変数に割り当てるため。 |
これらの他のPLSQL投稿を読む必要があります
OraclePLSQLのブロック構造とタイプ
Oracleplsqlの面接に関する質問
Oraclesqlおよびplsqlのクイックチュートリアル