我有以下存储过程在表上返回一行,然后我想将其作为表名输入到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]
为了实现这个目的,正确的语法是什么?
由于
答案 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