規則 - 付近に不適切な構文があります。 sql




SQL Serverのビュー-不適切な命名規則? (2)

quotename()使用してください。

Set @SQL = 'SELECT TOP 10 * FROM ' + QUOTENAME(@TableName);
DECLARE @TableName AS VARCHAR(250);
DECLARE @SQL AS VARCHAR(500);
DECLARE @ViewCheck as CURSOR;

SET @ViewCheck = CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'VIEW' AND TABLE_NAME LIKE 'V_WFC%'

OPEN @ViewCheck

FETCH NEXT FROM @ViewCheck INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN

Set @SQL = 'SELECT TOP 10 * FROM ' + @TableName 

PRINT(@SQL)
EXEC(@SQL)

FETCH NEXT FROM @ViewCheck INTO @TableName;
END

CLOSE @ViewCheck

特定のスキーマ内のすべてのSQLビューを調べて、それらが機能し続けることを確認するためのカーソルを持っています。いくつかはレポーティングに関連し、いくつかはProSolutionでアプリケーションデータソースとして使用されます。

これらのビューの1つはUnmarkedRegister(Today)という名前で、これを類似のビューと区別するために使用されています。これはアプリケーション内で表示データを駆動するために使用されます。

クエリが予想通りに実行されている間、正しいデータを返します - カーソルはエラーを返します

メッセージ208、レベル16、状態1、行1
無効なオブジェクト名 'V_WFC_UnmarkedRegister'

カーソルのEXEC(SQL)セクションで括弧で囲まれたセクションが省略されているのはなぜだろうか。


大括弧は通常関数呼び出しを識別するため

この行を変更する:

Set @SQL = 'SELECT TOP 10 * FROM ' + @TableName

これを修正する必要があります:

Set @SQL = 'SELECT TOP 10 * FROM [' + @TableName + ']'




sql-server