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