101

既存の SQL Server ストアド プロシージャの変更に取り組んでいます。テーブルに 2 つの新しい列を追加し、ストアド プロシージャも変更して、これら 2 つの列も選択するようにしました。テーブルで列を使用できますが、次のエラーが発生し続けます。

無効な列名「INCL_GSTAMOUNT」

ここに画像の説明を入力

ここで何が問題なのか誰か教えてください。

4

18 に答える 18

94

文字列を一重引用符ではなく二重引用符で囲んだ場合にも発生する可能性があります。

于 2014-03-07T03:30:25.560 に答える
4

このエラーは、カプセル化された SQL ステートメントでも発生する可能性があります。

DECLARE @tableName nvarchar(20) SET @tableName = 'GROC'

DECLARE @updtStmt nvarchar(4000)

SET @updtStmt = 'Update tbProductMaster_' +@tableName +' SET department_str = ' + @tableName exec sp_executesql @updtStmt

次のように、パラメーター「@tableName」をさらにカプセル化するための引用符が欠落していることを発見するだけです。

SET @updtStmt = 'Update tbProductMaster_' +@tableName +' SET department_str = ''' + @tableName + ''' '

ありがとう

于 2016-03-09T09:22:22.187 に答える
1

I was getting the same error when creating a view.

Imagine a select query that executes without issue:

select id
from products

Attempting to create a view from the same query would produce an error:

create view app.foobar as
select id
from products

Msg 207, Level 16, State 1, Procedure foobar, Line 2
Invalid column name 'id'.

For me it turned out to be a scoping issue; note the view is being created in a different schema. Specifying the schema of the products table solved the issue. Ie.. using dbo.products instead of just products.

于 2016-04-14T03:46:38.613 に答える
1

次の手順でこの問題を解決できましたが、理由がわかりません。

  1. メッセージ内の行で指定された問題のコードを切り取ります
  2. クエリを保存します (たとえば、ファイルに)
  3. コードを元の場所に貼り付けます
  4. もう一度クエリを保存します

同じクエリを実行しているように見えても、このエラーはスローされませんでした

于 2018-01-23T09:50:41.570 に答える
0

MSSQL結合を実行するときに、結合しているテーブルが結合しているテーブルの隣にない場合、「無効な列名」がスローされることに注意しました。と を指定しようtable1.row1table3.row3しましたが、まだエラーが発生していました。クエリでテーブルを並べ替えるまで、消えませんでした。どうやら、ステートメント内のテーブルの順序が重要です。

+-------------+    +-------------+    +-------------+    
| table1      |    | table2      |    | table3      |    
+-------------+    +-------------+    +-------------+    
| row1 | col1 |    | row2 | col2 |    | row3 | col3 |    
+------+------+    +------+------+    +------+------+    
| ...  | ...  |    | ...  | ...  |    | ...  | ...  |    
+------+------+    +------+------+    +------+------+    

SELECT * FROM table1, table2 LEFT JOIN table3 ON row1 = row3; --throws an error
SELECT * FROM table2, table1 LEFT JOIN table3 ON row1 = row3; --works as expected
于 2019-10-25T20:19:02.823 に答える
0

列に整数値を格納するとvarchar、そのエラーが発生します。

$item1PHPの使用から挿入して'$item1'、変数をintに文字列にします

于 2021-08-24T08:31:29.827 に答える