0

変数に含める必要があるテーブルから選択しようとしています。アプリケーションから動的に作成されたテーブルを使用しています。テーブルには CMDB_CI_XXX という名前が付けられます。ここで、XXX は別のテーブルの値に基づく整数値になります。最終的な目標は、テーブルから CI 名を取得することです。

テーブル名を構成する部分を関数に渡し、それらをつなぎ合わせて名前の値を返すことを試みましたが、関数でEXECステートメントを使用することは許可されていません.

これは、名前の値を取り戻すために実行したいものです:

Select [Name] from 'CMDB_CI_' + C.CI_TYPE_ID + Where CI_ID = c.CI_ID

これは、名前の値を取得するために関数を使用したい SP のコードです。

SELECT  
  CI_ID,
  C.CI_TYPE_ID,
  CI_CUSTOM_ID,
  STATUS,
  CI_TYPE_NAME,
  --(Select [Name] from CMDB_CI_ + C.CI_TYPE_ID + Where CI_ID = c.CI_ID)   
FROM [footprints].[dbo].[CMDB50_CI_COMMON] c
join [footprints].[dbo].[CMDB50_CI_TYPE] t
on c.CI_TYPE_ID = t.CI_TYPE_ID 
where status <> 'retired'
order by CI_TYPE_NAME 

私はこれをどうするかわかりません。助けてください?

ありがとう、ジェニファー

4

2 に答える 2

1
-- This part would be a SP parameter I expect
DECLARE @tableName varchar(100)
SET @tableName = 'CMDB_CI_508'

-- Main SP code
DECLARE @sqlStm VARCHAR(MAX)

SET @sqlStm = 'SELECT * 
FROM '+ @tableName

EXEC (@sqlStm)

フィドルhttp://sqlfiddle.com/#!3/436a7/7

于 2013-07-26T17:48:35.697 に答える