0
我試圖構建一個存儲過程,它將ID轉換爲給定數據庫中任何鍵的可顯示值。爲此,我添加了一個名爲LookupMap的表,它指定了用於KeyField和DisplayField的哪些字段。從變量查詢中返回一個輸出參數
TableName KeyField DisplayField
--------- -------- ------------
Company CompanyId CompanyName
Location LocationId LocationName
我想傳遞一個表名和一個Key值並取回Display值。下面就是我失敗嘗試:
Create Procedure [dbo].[GetLookup]
@TableName varchar(50),
@Key varchar(50),
@DisplayValue varchar(255) out
AS
BEGIN
DECLARE @DisplayField varchar(50)
DECLARE @IdField varchar(50)
Select @DisplayField = DisplayField, @IdField = IdField
From LookupMap where TableName = @TableName
DECLARE @sql NVARCHAR(500)
SET @sql = N'SET @DisplayValue = (SELECT ' + @DisplayField + N' FROM ' + @TableName +
N' WHERE ' + @IdField + N' = ''' + @Key + N''')'
Print @sql
Set @DisplayValue = (EXEC (@sql))
END
一切正常,直到最後一行,但我不知道怎麼弄的值從動態查詢背部並將其分配給OUT參數。另外,雖然我知道這些鍵是唯一的,並且只會有一個匹配,但我意識到我需要將表結果分配給varchar。
隨時告訴我,我的做法是錯誤的。
這工作!非常感激。 – 2013-03-07 22:32:17