関数を使用してテーブルの列を更新しようとしています。関数の入力パラメーターは、更新するテーブルのデータ フィールドです。
2 つの列 (「国」と「資本」) を持つテーブルがあるとします。「首都」が入力され、郡名を首都名で返す関数を入力パラメーターとして使用しています。したがって、私の更新コードは次のようなものです。
UPDATE @TableName
SET Country=(SELECT Country FROM dbo.fn_GetCountryByCapital(Capital))
IntelliSence によって生成されるエラーはありませんが、F5 キーを押すと次のように表示されます。
「Capital」付近の構文が正しくありません。
これは単なる例であることに注意してください (ばかげているように見える可能性があるため)。私の問題を説明するためにサンプルを提供します。私の実際の状況には、update ステートメントでのいくつかの関数の使用が含まれます。
助けてくれてありがとう。上呂
考えられる解決策:
これを行う別の方法を見つけました。見栄えはよくありませんが、機能します。
- while ステートメントを使用するために、一時テーブルにインデックスを追加しました
- テーブル内の各レコードに対して (while ステートメントを使用)、必要なフィールド情報を格納するために一時変数を使用しました。
- 次に、この情報を関数に渡し、結果を使用してテーブルを更新しました
私の推測では、select ステートメントと関数を囲む括弧 '( )' が、関数がテーブルから正しい値を使用することを許可していません。