【问题标题】:using stored procedure parameter as join condition within procedure使用存储过程参数作为过程中的连接条件
【发布时间】:2017-11-17 12:48:29
【问题描述】:

我想要的是,使用参数 @PackageId 作为 Packages 表中的连接条件参数,同时将 Packages 表与 Devices 连接(在 FROM Packages 周围的某处加入 Packages.PackageId=Devices.PackageId 上的设备)

create PROC [dbo].[Usp_MissingPackageList] 
(@DeviceName AS varchar(50),
@PackageId as int )
AS
BEGIN
    SELECT Packages.PackageId
        ,Packages.DisplayName
        ,Packages.PublishedBy
        ,convert(VARCHAR(10),Packages.PublishedOn, 101) PublishedOn
    FROM Packages Join Devices on Packages.PackageId=Devices.PackageId
    join [dbo].[PersonalizationStatuses] on Devices.SerialKey=PersonalizationStatuses.DeviceSerialNo
    where (Packages.PackageId>@PackageID) and (Packages.FlightType=PersonalizationStatuses.FleetType or Packages.FlightType='Common')
    ORDER BY PackageId ASC
END

我的要求是从具有 PackageId>@PackageId 的 Package 表中获取所有 tha 包

【问题讨论】:

  • 我不清楚你想要什么,如果你想获得匹配,你可以在 Packages.PackageId=@packageid 上加入设备并删除 where (Packages.PackageId>@PackageID) 。 . 或在 Packages.PackageId=Devices.PackageId 上加入设备并将位置更改为位置 (Packages.PackageId = @PackageID)。
  • @P.Salmon 很抱歉回复晚了,我的要求是在 Packages.PackageId(= @PackageId)=Devices.PackageId 时将 Packages 表与设备一起加入。然后从 Packages 表中获取所有 PackageId >@PackageId 以及 where clouse 中的其他条件也满足的包。

标签: sql sql-server join stored-procedures


【解决方案1】:

与加入一起使用

  create PROC [dbo].[Usp_MissingPackageList] 
    (@DeviceName AS varchar(50),
    @PackageId as int )
    AS
    BEGIN
        SELECT Packages.PackageId
            ,Packages.DisplayName
            ,Packages.PublishedBy
            ,convert(VARCHAR(10),Packages.PublishedOn, 101) PublishedOn
        FROM Packages Join Devices on Packages.PackageId=Devices.PackageId AND (Packages.PackageId>@PackageID)
        join [dbo].[PersonalizationStatuses] on Devices.SerialKey=PersonalizationStatuses.DeviceSerialNo
        where  (Packages.FlightType=PersonalizationStatuses.FleetType or Packages.FlightType='Common')
        ORDER BY PackageId ASC
    END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2016-03-11
    • 2020-08-02
    • 2023-03-09
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多