1

レポートのデータを取得するストアド プロシージャがあります。パラメータに問題があります。いくつかの一時テーブルと機能するいくつかの結合があるため、以下ではそれらを省略しました。問題は次の行です。

WHERE
SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType

セミナー パラメータを使用するためにこの where 句を挿入すると、ストアド プロシージャは何も返しませんが、これら 2 つのパラメータに基づいてレポートを生成する必要があります。では、パラメータはどこに行くのでしょうか? 誰でも助けることができますか?

@StartDate DateTime,
@EndDate DateTime,
@SeminarDivision VARCHAR(50),
@SeminarType VARCHAR(50)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

      ... OMITTED    
SELECT 
    WL.PID,
    CONVERT(varchar(20), upper(substring(FirstName,1,1))+
        LOWER(substring(FirstName,2,19))) AS FirstName,
    CONVERT(varchar(20), upper(substring(LastName,1,1))+
        LOWER(substring(LastName,2,19))) AS LastName,
    S.SeminarDivision,
    S.SeminarType,
    S.StartDate,
    S.SeminarLocation
FROM 
    @tblWaitList WL
    INNER JOIN @tblSeminar S ON WL.SeminarGuid=S.SeminarGuid
WHERE
    SeminarDivision = @SeminarDivision AND SeminarType = @SeminarType
ORDER BY
    LastName,FirstName,StartDate
4

3 に答える 3

1

パラメータの「場所」に問題はありません。

データが返されない場合は、データが入力されていない@tblWaiListか、レコードが句@tblSeminarと一致していないことが原因です。WHERE

print @SeminarDivisionパラメータが実行などによって行うと思われる値を持っていることを確認してください。

SELECT * FROM @tblSeminarあなたにも手がかりを与えるかもしれません。

于 2011-11-01T14:56:14.377 に答える
1

呼び出しのパラメーターを正しく設定していません。

SSMSでこれを試して、それに応じて値を変更してください

EXEC Proc '20110101', '20111101', 'PossibleDivision', 'PossibleType'

これが失敗した場合は、「OMITTED」コードを表示してください

これが機能する場合は、クライアント コードからこれを呼び出す方法を示してください

于 2011-11-01T15:14:12.740 に答える
1

何よりもまず、コードに問題はありません。これらのパラメーターがどこに行くのかを尋ねると、配置した場所に正確に移動します。問題は、SeminarDivision および SeminarType に入力されるデータが正しいタイプのデータであるかどうかです。たとえば、テストとして、コードをエディター内の新しい SQL コード クエリにコピーします。値が大きい場合は、where なしでコマンドを実行します。ここで場所を変更します

WHERE SeminarDivision = "Possible_Value"

Possible_Value は可能な値である必要があります...行が返される場合は、良い...今度は 2 番目の条件を追加して、値もハードコーディングします。

WHERE SeminarDivision = "Possble_Value" AND SeminarType="Possible_Value_2"

データを取得しますか?ORではなく、あなたが望むことは可能ですANDか?

于 2011-11-01T14:54:03.670 に答える