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

Я использую вывод этого 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

0 ответов

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

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
Другие вопросы по тегам