|
93 | 93 | source for a <command>FOR</command> loop, as described in |
94 | 94 | <xref linkend="plpgsql-records-iterating"/>. |
95 | 95 | </span> |
96 | | -《マッチ度[89.441931]》コマンドが行を返すのであれば(例えば<code class="command">SELECT</code>や<code class="literal">RETURNING</code>を伴う<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>など)、処理する方法が2つあります。 |
| 96 | +コマンドが行を返すのであれば(例えば<code class="command">SELECT</code>や<code class="literal">RETURNING</code>を伴う<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>など)、処理する方法が2つあります。 |
97 | 97 | コマンドが多くても1行を返す場合、もしくは出力の最初の行だけに関心がある場合には、<a class="xref" href="plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW" title="41.5.3. 1行の結果を返すコマンドの実行">41.5.3</a>に書かれているように、出力を取得するための<code class="literal">INTO</code>句を追加する以外は通常通りコマンドを書いてください。 |
98 | 98 | 出力行をすべて処理するためには、<a class="xref" href="plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING" title="41.6.6. 問い合わせ結果による繰り返し">41.6.6</a>に書かれているように、<code class="command">FOR</code>ループに対するデータソースとしてコマンドを書いてください。 |
99 | | -《機械翻訳》コマンドが行を返す場合(例えば<code class="command">SELECT</code>、<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>と<code class="literal">RETURNING</code>を伴う)、2つの方法があります。 |
100 | | -コマンドが最大1行を返す場合、または出力の最初の行だけを気にする場合は、通常どおりコマンドを書きますが、<a class="xref" href="plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW" title="41.5.3. 1行の結果を返すコマンドの実行">41.5.3</a>で説明したように、<code class="literal">INTO</code>句を追加して出力を取り込みます。 |
101 | | -すべての出力行を処理するには、<a class="xref" href="plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING" title="41.6.6. 問い合わせ結果による繰り返し">41.6.6</a>で説明したように、<code class="command">FOR</code>ループのデータソースとしてコマンドを書いてください。 |
102 | 99 | </p><p> |
103 | 100 | <span class="original"> |
104 | 101 | Usually it is not sufficient just to execute statically-defined SQL |
|
251 | 248 | Except for the <literal>INTO</literal> clause, the SQL command is the same |
252 | 249 | as it would be written outside <application>PL/pgSQL</application>. |
253 | 250 | </span> |
254 | | -《マッチ度[88.604353]》ここで、<em class="replaceable"><code>target</code></em>はレコード変数、行変数、あるいは、単純な変数とレコード/行変数のフィールドをカンマで区切ったリストです。 |
| 251 | +ここで、<em class="replaceable"><code>target</code></em>はレコード変数、行変数、あるいは、単純な変数とレコード/行変数のフィールドをカンマで区切ったリストです。 |
255 | 252 | 上述のように<span class="application">PL/pgSQL</span>変数によりコマンドの残り(すなわち、<code class="literal">INTO</code>句以外のすべて)が置換され、同じように計画がキャッシュされます。 |
256 | | -このように作動するのは、<code class="command">SELECT</code>、<code class="literal">RETURNING</code>を伴った<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>とおよび<code class="command">EXPLAIN</code>のような行セットの結果を返す特定のユーティリティコマンドです。 |
| 253 | +このように作動するのは、<code class="command">SELECT</code>、<code class="literal">RETURNING</code>を伴った<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>および<code class="command">EXPLAIN</code>のような行セットの結果を返す特定のユーティリティコマンドです。 |
257 | 254 | <code class="literal">INTO</code>句以外では、SQLコマンドは<span class="application">PL/pgSQL</span>の外部に記述したものと同じです。 |
258 | | -《機械翻訳》ここで<em class="replaceable"><code>target</code></em>はレコード変数、行変数、または単純な変数とレコード/行フィールドのカンマ区切りリストです。 |
259 | | -上記のように、<span class="application">PL/pgSQL</span>変数はコマンドの残りの部分(つまり<code class="literal">INTO</code>句以外の部分)に置換され、計画は同じ方法でキャッシュされます。 |
260 | | -これは<code class="command">SELECT</code>、<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>、<code class="literal">RETURNING</code>を伴う特定のユーティリティコマンド、および行セットを返す<code class="command">EXPLAIN</code>などに有効です。 |
261 | | -<code class="literal">INTO</code>句を除き、SQLコマンドは<span class="application">PL/pgSQL</span>の外部で書かれた場合と同じです。 |
262 | 255 | </p><div class="tip"><h3 class="title">ヒント</h3><p> |
263 | 256 | <span class="original"> |
264 | 257 | Note that this interpretation of <command>SELECT</command> with <literal>INTO</literal> |
|
357 | 350 | is no option such as <literal>ORDER BY</literal> with which to determine |
358 | 351 | which affected row should be returned. |
359 | 352 | </span> |
360 | | -《マッチ度[86.714976]》<span class="application">PL/pgSQL</span>は<code class="literal">STRICT</code>が指定されない場合でも、<code class="literal">RETURNING</code>を伴った<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>が2行以上を返した時は、エラーとなります。 |
| 353 | +<span class="application">PL/pgSQL</span>は<code class="literal">STRICT</code>が指定されない場合でも、<code class="literal">RETURNING</code>を伴った<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>が2行以上を返した時は、エラーとなります。 |
361 | 354 | なぜなら、どの1行を返すか決定する<code class="literal">ORDER BY</code>のようなオプションが存在しないからです。 |
362 | | -《機械翻訳》<code class="literal">RETURNING</code>を指定した<code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>に対して、<code class="literal">STRICT</code>が指定されていない場合でも、<span class="application">PL/pgSQL</span>は複数の返された行に対してエラーを報告します。 |
363 | | -これは、どの返された行を返すかを決定するための<code class="literal">ORDER BY</code>などのオプションがないためです。 |
364 | 355 | </p><p> |
365 | 356 | <span class="original"> |
366 | 357 | If <literal>print_strict_params</literal> is enabled for the function, |
|
0 commit comments