既存の SQL Server ストアド プロシージャの変更に取り組んでいます。テーブルに 2 つの新しい列を追加し、ストアド プロシージャも変更して、これら 2 つの列も選択するようにしました。テーブルで列を使用できますが、次のエラーが発生し続けます。
無効な列名「INCL_GSTAMOUNT」
ここで何が問題なのか誰か教えてください。
既存の SQL Server ストアド プロシージャの変更に取り組んでいます。テーブルに 2 つの新しい列を追加し、ストアド プロシージャも変更して、これら 2 つの列も選択するようにしました。テーブルで列を使用できますが、次のエラーが発生し続けます。
無効な列名「INCL_GSTAMOUNT」
ここで何が問題なのか誰か教えてください。
文字列を一重引用符ではなく二重引用符で囲んだ場合にも発生する可能性があります。
このエラーは、カプセル化された 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 + ''' '
ありがとう
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
.
次の手順でこの問題を解決できましたが、理由がわかりません。
同じクエリを実行しているように見えても、このエラーはスローされませんでした
MSSQL
結合を実行するときに、結合しているテーブルが結合しているテーブルの隣にない場合、「無効な列名」がスローされることに注意しました。と を指定しようtable1.row1
とtable3.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
列に整数値を格納するとvarchar
、そのエラーが発生します。
$item1
PHPの使用から挿入して'$item1'
、変数をintに文字列にします