次の宣言の使用は何ですか?また、これらの宣言のタイプはどこで使用されますか? PostgreSQL's documentationからpostgresqlのROWTYPE、TYPE、RECORDの違いは?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
次の宣言の使用は何ですか?また、これらの宣言のタイプはどこで使用されますか? PostgreSQL's documentationからpostgresqlのROWTYPE、TYPE、RECORDの違いは?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
:
TYPE
変数やテーブル列のデータ・タイプを提供します。これを使用して、データベース値を保持する変数を宣言することができます。たとえば、users
テーブルにuser_id
という名前の列があるとします。 users.user_id
と同じデータ型の変数を宣言するには、user_id users.user_id%TYPE;
と記述します。
ROWTYPE
:複合型の変数は、行変数(または行型変数)と呼ばれます。このような変数は、クエリの列セットが変数の宣言された型と一致する限り、SELECT
またはFOR
のクエリ結果の行全体を保持できます。行値の個々のフィールドには、通常のドット表記を使用してアクセスします(例:rowvar.field
)。
RECORD
:レコード変数は行タイプ変数と似ていますが、事前定義された構造はありません。それらは、SELECT
またはFOR
コマンドの間に割り当てられた行の実際の行構造をとります。レコード変数の下位構造は、それが割り当てられるたびに変更できます。その結果、レコード変数が最初に割り当てられるまで、それは部分構造を持たず、その中のフィールドにアクセスしようとすると実行時エラーが発生します。
詳しくはリンクを参照してください。