1

私はこのようなテーブルを持っていますTABLES_IDS

Table_ID  Table_Name  Table_Column
--------  ----------  ------------
100       Attributes  Attribute_id
101       NewSamples  Section_id
...

のいくつかの値を返す「最初のクエリ」がありますTable_Name。これTable_Nameは実際には別のテーブルの名前でTable_Columnあり、列です。私は次のことをする必要があります:

  1. 取得するたびTable_Nameに、対応するTable_Column値を取得する必要があります。
  2. とを使用Table_NameしてTable_Column、次のような新しいSQLクエリを作成します。

    SELECT FROM Table_Name WHERE Table_Column = 12345
    
  3. Table_Name最初のクエリによって返されるすべてに対して、すべてを自動的に繰り返します。

4

1 に答える 1

4

あなたの質問を理解できたら、このテーブルに格納されているテーブル/列名に基づいて一連のクエリを実行したいと考えています。テーブル名と列名を変数として参照したり、クエリや式の結果から取得したりすることはできないため、動的 SQL を使用する必要があります。

DECLARE @sql NVARCHAR(MAX);

SET @sql = N'';

SELECT @sql = @sql + N'SELECT * FROM dbo.' 
  + QUOTENAME(Table_Name) + ' WHERE ' 
  + QUOTENAME(Table_Column) + ' = 12345;'
FROM dbo.TABLES_IDS
-- WHERE...
;

EXEC sp_executesql @sql;
于 2013-01-29T17:07:53.830 に答える