1

名前テーブルが動的に計算されるクエリを書きたいと思います。以下のようなコードがあります。「マジック コード」領域には何を入力すればよいですか?

DECLARE @myTableName nvarchar(100) = 'sch' 
         +  CAST(@nowYear as VARCHAR(5)) 
         +  'Q' 
         +  CAST(@nowQuarter as VARCHAR(3)) 
         +  '.[tVisits]'

-- magic code --
myTable = DoSomething(@aktTableName)   
-- magic code --

SELECT * FROM myTable

MS SQL Server 2012 を使用しています

4

2 に答える 2

2

動的SQLを使用する必要があります-

DECLARE 
      @nowYear INT = 2013
    , @nowQuarter INT = 1

DECLARE @myTableName NVARCHAR(100) = '[sch' 
         +  CAST(@nowYear AS VARCHAR(5)) 
         +  'Q' 
         +  CAST(@nowQuarter AS VARCHAR(3)) 
         +  '].[tVisits]'

DECLARE @SQL NVARCHAR(MAX) = N'SELECT * FROM ' + @myTableName

EXEC sys.sp_executesql @SQL
于 2013-04-25T13:15:53.550 に答える
0

それ以外のSELECT * FROM myTable

次のようなことをする必要があります

DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT * FROM ' + @myTable -- @myTable is a string containing qualified table name
EXEC sp_executesql @sql

sp_executesql ではパラメータ化されたクエリが可能であることに注意してください -そのドキュメントを確認してください

于 2013-04-25T13:19:27.267 に答える