0

SSRS 内のストアド プロシージャにはかなり新しいものです。

SSRS データセット ナット内でパラメーターが直接渡される多数のレポートに取り組んできましたが、これは私にとって少し新しいことであり、少し混乱しているようです。

まったく同じレイアウトの 2 つのレポートをマージし、SSRS からのドロップダウン選択に基づいてレポートを実行する必要があります。

私のストアドプロシージャは以下のようなものです。


USE [ReportsDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[rpt_WithoutExternalReferences]
(
    @XNumber INT,
    @YNumber INT
)   
AS

BEGIN
SET NOCOUNT ON

IF (@XNumber = NULL)
    BEGIN
        SELECT 
            adviser_account.adviser_account_id,
            dealer.old_system_reference,
            external_reference.external_reference AS Missing_refernce,
            entity.name AS Name,
            entity.given_names As Given_Names,
            entity_address.property_name,
        FROM Composer_adviser_account AS adviser_account
        INNER JOIN Composer_entity AS entity
        ON adviser_account.entity_id = entity.entity_id
        LEFT JOIN Composer_party_external_reference AS external_reference
        ON adviser_account.adviser_account_id = external_reference.party_id  
        WHERE
            external_reference.party_type_id = 3
    END
ELSE
    BEGIN
        IF (@YNumber = NULL)
            BEGIN
                SELECT 
                    dealer.dealer_id,
                    dealer.old_system_reference,
                    dealer.fsa_firm_reference_id as Missing_refernce,
                    entity.name AS Name,
                    entity.given_names AS Given_Names,
                    entity_address.property_name,
                FROM Composer_dealer AS dealer
                INNER JOIN Composer_entity AS entity
                ON dealer.entity_id = entity.entity_id
                INNER JOIN Composer_address AS entity_address
                ON entity.entity_id = entity_address.entity_id
                WHERE dealer.fsa_firm_reference_id IS NULL
            END
        END
    END
END

ここで、SSRS からこのストアド プロシージャを呼び出したいと思います。ここで、ユーザーは XNumber Null または YNumber NULL を選択でき、コードの対応する部分が実行されます。

どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

0

NULL比較に注意してください。ISキーワードを使用する必要があり、入力パラメーターをオプションにする必要があります。

CREATE PROCEDURE [dbo].[rpt_WithoutExternalReferences]
(
    @XNumber INT = NULL,
    @YNumber INT = NULL
)   
AS BEGIN

    SET NOCOUNT ON

    IF ((@XNumber IS NULL AND YNumber IS NULL) OR
        (@XNumber IS NOT NULL AND YNumber IS NOT NULL))
        RAISERROR('Invalid arguments', 16, 1);

    IF (@XNumber IS NULL) BEGIN

        SELECT      adviser_account.adviser_account_id
                    ,dealer.old_system_reference 
                    ,external_reference.external_reference AS Missing_refernce
                    ,entity.name AS Name
                    ,entity.given_names As Given_Names
                    ,entity_address.property_name 
        FROM        Composer_adviser_account AS adviser_account
        INNER JOIN  Composer_entity AS entity
                ON  adviser_account.entity_id = entity.entity_id
        LEFT JOIN   Composer_party_external_reference AS external_reference
                ON  adviser_account.adviser_account_id = external_reference.party_id  
        WHERE       external_reference.party_type_id = 3

    END ELSE IF (@YNumber IS NULL) BEGIN

        SELECT      dealer.dealer_id 
                    ,dealer.old_system_reference 
                    ,dealer.fsa_firm_reference_id as Missing_refernce
                    ,entity.name AS Name
                    ,entity.given_names AS Given_Names
                    ,entity_address.property_name 
        FROM        Composer_dealer AS dealer
        INNER JOIN  Composer_entity AS entity
                ON  dealer.entity_id = entity.entity_id
        INNER JOIN  Composer_address AS entity_address
                ON  entity.entity_id = entity_address.entity_id
        WHERE       dealer.fsa_firm_reference_id IS NULL

    END

END
于 2013-11-08T13:55:56.737 に答える