0

関数を使用してテーブルの列を更新しようとしています。関数の入力パラメーターは、更新するテーブルのデータ フィールドです。

2 つの列 (「国」と「資本」) を持つテーブルがあるとします。「首都」が入力され、郡名を首都名で返す関数を入力パラメーターとして使用しています。したがって、私の更新コードは次のようなものです。

UPDATE @TableName
SET Country=(SELECT Country FROM dbo.fn_GetCountryByCapital(Capital))

IntelliSence によって生成されるエラーはありませんが、F5 キーを押すと次のように表示されます。

「Capital」付近の構文が正しくありません。

これは単なる例であることに注意してください (ばかげているように見える可能性があるため)。私の問題を説明するためにサンプルを提供します。私の実際の状況には、update ステートメントでのいくつかの関数の使用が含まれます。

助けてくれてありがとう。上呂

考えられる解決策:

これを行う別の方法を見つけました。見栄えはよくありませんが、機能します。

  • while ステートメントを使用するために、一時テーブルにインデックスを追加しました
  • テーブル内の各レコードに対して (while ステートメントを使用)、必要なフィールド情報を格納するために一時変数を使用しました。
  • 次に、この情報を関数に渡し、結果を使用してテーブルを更新しました

私の推測では、select ステートメントと関数を囲む括弧 '( )' が、関数がテーブルから正しい値を使用することを許可していません。

4

1 に答える 1