首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将临时表更改为声明它们

将临时表更改为声明它们
EN

Stack Overflow用户
提问于 2015-12-17 17:57:27
回答 1查看 73关注 0票数 0

只是一个关于临时表和声明表的问题。如果我将临时表“ChangedData”和“PackageDatatoProcess”更改为它们自己的变量“@ChangedData”和“@PackageDatatoProcess”,我是否可以询问如何将select语句更改为语句,因为我以前还没有这样做过。实际上,我告诉过我们可以声明表,而不是使用select into,但是在这方面需要一些帮助:

代码语言:javascript
复制
select distinct * into #PackageDataToProcess from #ChangedData pp
        outer apply (
            select pk.Reference, pjl.PackageToJournalLinkId, j.CreatedDate, pccl.PackageCostChangeLogId from Jet2Holidays.dbo.Package pk
            inner join Jet2Holidays.dbo.PackageToJournalLink pjl on pk.PackageId = pjl.PackageId
            inner join Jet2Holidays.dbo.Journal j on pjl.JournalId = j.JournalId
                and j.PrincipalName= iif(@AllowNonSupportChanges = 0, 'HolidaysSupport', j.PrincipalName) 
            inner join Jet2Holidays.dbo.BusinessProcess bp on pjl.BusinessProcessId = bp.BusinessProcessId
                and bp.[Description] =  iif(@AllowNonSupportChanges = 0, 'CallCentreAction', bp.[Description]) 
            left outer join Jet2Holidays.dbo.PackageCostChangeLog pccl on pccl.PackageToJournalLinkId = pjl.PackageToJournalLinkId
            where pk.Reference = pp.PackageReference
            and pp.JournalID = pjl.JournalId

            ) as packageData
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 18:11:10

首先,声明变量表如下所示:

代码语言:javascript
复制
DECLARE @PackageDataToProcess TABLE
(
    Reference UNIQUEIDENTIFIER
,   PackageToJournalLinkId INT
,   CreatedDate DATETIME
,   PackageCostChangeLogId INT
,   {other columns here}
)

DECLARE @ChangedData TABLE
(
    Reference UNIQUEIDENTIFIER
,   PackageToJournalLinkId INT
,   CreatedDate DATETIME
,   PackageCostChangeLogId INT
,   {other columns here}
)

此时,您可以填充@ChangedData表,如下所示:

代码语言:javascript
复制
INSERT @ChangedData ( Reference, PackageToJournalLinkId, CreatedDate, PackageCostChangeLogId, {other columns})
SELECT Reference, PackageToJournalLinkId, CreatedDate, PackageCostChangeLogId, {other columns} 
   FROM ChangedDataSource -- Table, Procedure, Function

然后可以通过将@PackageDataToProcess替换为#PackageDataToProcess来运行代码。这里再次进行了一次轻微的重写(从原来的):

代码语言:javascript
复制
    INSERT @PackageDataToProcess
    select distinct pp.* from @ChangedData pp
    outer apply (
        select pk.Reference, pjl.PackageToJournalLinkId, j.CreatedDate, pccl.PackageCostChangeLogId from Jet2Holidays.dbo.Package pk
        inner join Jet2Holidays.dbo.PackageToJournalLink pjl on pk.PackageId = pjl.PackageId
        inner join Jet2Holidays.dbo.Journal j on pjl.JournalId = j.JournalId
            and j.PrincipalName= iif(@AllowNonSupportChanges = 0, 'HolidaysSupport', j.PrincipalName) 
        inner join Jet2Holidays.dbo.BusinessProcess bp on pjl.BusinessProcessId = bp.BusinessProcessId
            and bp.[Description] =  iif(@AllowNonSupportChanges = 0, 'CallCentreAction', bp.[Description]) 
        left outer join Jet2Holidays.dbo.PackageCostChangeLog pccl on pccl.PackageToJournalLinkId = pjl.PackageToJournalLinkId
        where pk.Reference = pp.PackageReference
        and pp.JournalID = pjl.JournalId

        ) as packageData

您声明的表将以类似于非全局临时表的方式超出范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34341220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档