如何使用存储过程返回表名

时间:2014-05-27 13:57:33

标签: sql-server stored-procedures

我有以下存储过程在表上返回一行,然后我想将其作为表名输入到SQL语句中。

存储过程:

Create Procedure TLookup as
select distinct [BillingReferenceData].[dbo].[Customers].[Tariff]
from [daisybilling].[dbo].[APRW14_FFA68878_Calls]
inner join [BillingReferenceData].[dbo].[Customers] on [DaisyBilling].[dbo].[APRW14_FFA68878_Calls].[Customer Lookup] = [BillingReferenceData].[dbo].[Customers].[Customer ID]
where [DaisyBilling].[dbo].[APRW14_FFA68878_Calls].[Customer Lookup] = [BillingReferenceData].[dbo].[Customers].[Customer ID]

以下是我的代码的其余部分,我在此处突出显示“INSERT TABLE NAME”,我需要输入在上述过程中收集的表名。

UPDATE [APRW14_FFA68878_Calls] 
SET    [APRW14_FFA68878_Calls].[Sell Price] = [INSERT TABLE NAME HERE].[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].[INSERT TABLE NAME HERE].[Chargecode]

为了实现这个目的,正确的语法是什么?

由于

1 个答案:

答案 0 :(得分:0)

一旦将存储过程的结果(表名)分配给变量,就必须使用动态sql将其插入到更新语句中,如下所示:

DECLARE @sql NVARCHAR(max)

SELECT @sql = 'UPDATE [APRW14_FFA68878_Calls] 
SET    [APRW14_FFA68878_Calls].[Sell Price] = ' + @tablename + '.[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].[INSERT TABLE NAME HERE].[Chargecode]'

EXEC sp_executesql @sql