参数化值的输出作为表名

时间:2014-05-27 19:13:52

标签: sql sql-server

我有以下代码,我们的想法是[APRW14_FFA68878_Calls]表中的'Tariff Lookup'值将在第二个SQL查询中用作@tablevalue

问题是SQL字符串,而不是正在使用的输出。

请有人帮助使用正确的语法,以便使用实际的表名。

DECLARE @tablevalue nvarchar(max)
DECLARE @sql nvarchar(max)

SET @tablevalue = 'Select [Tariff Lookup] from [DaisyBilling].[dbo].[APRW14_FFA68878_Calls]'

SELECT @sql = 'UPDATE [APRW14_FFA68878_Calls] 
SET    [APRW14_FFA68878_Calls].[Sell Price] = [test].[dbo].' + @tablevalue +'.[Peak]/60*[APRW14_FFA68878_Calls].[Duration (secs)]
FROM   [Test].[dbo].[DaisyRates_May2014]
INNER JOIN [DaisyBilling].[dbo].[APRW14_FFA68878_Calls] on [DaisyBilling].[dbo].[APRW14_FFA68878_Calls].[ChargeCode] = [Test].[dbo].[DaisyRates_May2014].[Chargecode]'

EXEC sp_executesql @sql
PRINT @tablevalue

我也可以这样做,或者我需要一次解析每一行。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

这会解决您的问题吗?

DECLARE @tablevalue nvarchar(max);
DECLARE @sql nvarchar(max);

SELECT @tablevalue  = [Tariff Lookup]
FROM [DaisyBilling].[dbo].[APRW14_FFA68878_Calls];

SELECT @sql = N'UPDATE [APRW14_FFA68878_Calls] 
SET    [APRW14_FFA68878_Calls].[Sell Price] = [test].[dbo].' + @tablevalue +'.[Peak]/60*[APRW14_FFA68878_Calls].[Duration (secs)]
FROM   [Test].[dbo].[DaisyRates_May2014]
INNER JOIN [DaisyBilling].[dbo].[APRW14_FFA68878_Calls] on [DaisyBilling].[dbo].[APRW14_FFA68878_Calls].[ChargeCode] = [Test].[dbo].[DaisyRates_May2014].[Chargecode]';

EXEC sp_executesql @sql;
PRINT @tablevalue;