SQL - Как ВЫБРАТЬ дополнительные параметры в запросе SQL с помощью оператора DECLARE - PullRequest
0 голосов
/ 31 января 2019

Я использую вывод этого SQL в Crystal Reports.Я создал хранимую процедуру, так как в запросе есть оператор DECLARE.

Мне нужно - SELECT PP.PLPLANID - в качестве параметра, так как в моем запросе DECLARE это, кажется, мешает мнеот выбора дополнительных параметров.Что мне нужно сделать?

Это то, что я имею до сих пор - это создание одной строки и столбца, как мне нужно, но теперь мне нужно добавить дополнительные столбцы, такие как PP.PLPLANID и т. Д.

AS
BEGIN
    DECLARE @MultiZoneOverlays VARCHAR (2000)

    SET NOCOUNT ON

    SELECT @MultiZoneOverlays = COALESCE(@MultiZoneOverlays +', ', '') + Z.NAME
    FROM PLPLAN PP
    JOIN PLPLANPARCEL PLP ON PP.PLPLANID = PLP.PLPLANID
    JOIN PARCEL P ON PLP.PARCELID = P.PARCELID
    JOIN PLPLANZONE PLZ ON PP.PLPLANID = PLZ.PLPLANID
    JOIN ZONE Z ON PLZ.ZONEID = Z.ZONEID
    WHERE "PP"."PLPLANID" = @PLPLANID
      AND PLP.Main = '1'
      AND PLZ.MAIN = '0'

    SELECT @MultiZoneOverlays AS MultiZoneOverlaysList
END

1 Ответ

0 голосов
/ 11 марта 2019

Не говоря уже о том, что это лучший способ, но ради обучения, чтобы добавить больше переменных в соответствии с моделью в вашей текущей процедуре, вы можете сделать это:

AS
BEGIN
    DECLARE @MultiZoneOverlays VARCHAR (2000)
    , @Variable2 varchar(2000)
    , @Variable3 varchar(2000)

    SET NOCOUNT ON

    SELECT @MultiZoneOverlays = COALESCE(@MultiZoneOverlays +', ', '') + Z.NAME
    , @Variable2 = Column2
    , @Variable3 = Column3
    FROM PLPLAN PP
    JOIN PLPLANPARCEL PLP ON PP.PLPLANID = PLP.PLPLANID
    JOIN PARCEL P ON PLP.PARCELID = P.PARCELID
    JOIN PLPLANZONE PLZ ON PP.PLPLANID = PLZ.PLPLANID
    JOIN ZONE Z ON PLZ.ZONEID = Z.ZONEID
    WHERE "PP"."PLPLANID" = @PLPLANID
      AND PLP.Main = '1'
      AND PLZ.MAIN = '0'

    SELECT @MultiZoneOverlays AS MultiZoneOverlaysList
    ,      @Variable2 AS Var2
    ,      @Variable3 AS Var3
END
...