行データ・タイプに対するサポートされている割り当て

行または行フィールドに対する割り当てに関して、様々な値がサポートされています。

行変数またはパラメーターを宣言すると、行にある各フィールドには、値を割り当てるまでデフォルト値の NULL が入ります。

行変数には、以下のタイプの値を割り当てることができます。
  • SET ステートメントを使用して、同じ行データ・タイプの別の行変数
    • 互換性のあるタイプの場合、行変数に割り当て可能なのは行変数値だけです。 2 つの行変数がどちらも同じ行データ・タイプである場合、またはソース行変数が表またはビュー定義にアンカー付けされている場合には、それら 2 つの行変数には互換性があります。 2 つの変数のタイプが互換性を持つには、フィールド名とフィールド・データ・タイプが同じであるだけでは不十分です。

      例えば、row1 という名前の行データ・タイプと、row2 という名前の別のデータ・タイプを作成し、どちらの定義も同じ場合、タイプ row1 の変数の値をタイプ row2 の変数に割り当てることはできません。 または、タイプ row2 の変数の値をタイプ row1 の変数に割り当てることもできません。 ただし、タイプ row1 の変数 v1 の値を、やはりタイプ row1 の変数 v2 に割り当てることはできます。

  • 行とエレメント数が同じで、行のフィールドと同じデータ・タイプのエレメントからなるタプル。
    • 以下は、行に割り当てるリテラル・タプルの例です。
      SET v1 = (1, 'abc')
  • 行の値に解決する式
    • 行変数に割り当て可能な行の値に解決する式の例としては、VALUES ... INTO ステートメントにおける解決済み式があります。 以下は、そのような割り当ての例です。
      VALUES (1, 'abc') INTO rv1
  • 関数の戻りタイプ (ターゲット変数と行データ・タイプが同じ場合)。
    • 以下の例では、foo という名前の関数の戻りタイプがターゲット変数と同じ行データ・タイプです。
      SET v1 = foo()
      戻りデータ・タイプがアンカー・データ・タイプとして定義されている場合、アンカー・データ・タイプの割り当て規則が適用されます。
  • 照会の単一行結果セット
    • 結果セットには行と同じエレメント数がなければならず、列は行のフィールドと同じデータ・タイプに割り当て可能である必要があります。 以下は、このタイプの割り当て例です。
      SET v1 = (select c1, c2 from T)
  • NULL
    • 行変数に対して NULL が割り当てられると、すべての行フィールドは NULL に設定されますが、行変数自体は NOT NULL のままです。
以下のタイプの値を行変数フィールドに割り当てることができます。
  • リテラル
  • パラメーター
  • 可変
  • expression
  • NULL
以下の方法で、値を行フィールド値に割り当てられます。
  • SET ステートメントの使用
  • 行の値に解決する SELECT INTO ステートメントの使用
  • 行の値に解決する FETCH INTO ステートメントの使用
  • 行の値に解決する VALUES INTO ステートメントの使用

ROW データ・タイプは、SQL スカラー関数の戻りタイプとして指定できます。