使用存储过程参数作为过程中的连接条件

时间:2017-11-17 12:48:29

标签: sql sql-server join stored-procedures

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

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

我的要求是从Package表中获取包含PackageId> @PackageId

的所有包

1 个答案:

答案 0 :(得分:0)

与Join一起使用

  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