0

いくつかのパラメータを必要とするクエリがあります。

SQL Server Management Studioの標準のクエリ画面で実行すると、期待どおりに機能し、約15秒後にデータの行が返されます。複雑なクエリです。

ただし、ストアドプロシージャ内で実行すると、データの行がないヘッダーのみが返されます。

また、実行にかかる時間は最大1〜2秒です。

エラーは返されたり表示されたりしません。

その側面は次のようなものです。

CREATE PROCEDURE [dbo].[sp_StoreProcedure]
    @FDId INT
    , @Year INT
    , @NDate DATETIME
    , @SDate DATETIME
    , @MId INT
AS
BEGIN
    SET NOCOUNT ON;

    SELECT of complex query
END

そして、その呼び出しは単純です:

DECLARE @FDId INT
DECLARE @Year INT
DECLARE @NDate DATETIME
DECLARE @SDate DATETIME
DECLARE @MId INT

SET @FDId = 926
SET @Year = 2012
SET @NDate = '1900-01-01'
SET @SDate = GetDate()
SET @MId = 1

EXEC [outsystems].[dbo].[sp_StoreProcedure]
    @FDId
    , @Year
    , @SDate
    , @NDate
    , @MId

ただし、空のテーブルを返します。

どうすればこれが可能ですか?それを修正するにはどうすればよいですか?

編集->複雑なクエリには24の結合があります。ここにそれを示すのは巨大でしょう。

4

1 に答える 1

2

本当に間違いやすい。

ストアドプロシージャを宣言したとき:

CREATE PROCEDURE [dbo].[sp_StoreProcedure]
    @FDId INT
    , @Year INT
    , @NDate DATETIME
    , @SDate DATETIME
    , @MId INT

実行時に、パラメーターを正しい序数位置に渡していない:

EXEC [outsystems].[dbo].[sp_StoreProcedure]
    @FDId
    , @Year
    , @SDate
    , @NDate
    , @MId

SDateプロシージャを呼び出すときは、とNDateが逆になっていることに注意してください。

これは機能するはずです:

EXEC [outsystems].[dbo].[sp_StoreProcedure]
    @FDId
    , @Year
    , @NDate
    , @SDate
    , @MId

(序数の位置に依存するのではなく)実行時にどのパラメーターがどれであるかを指定していれば、これは問題ではなかったでしょう。

于 2013-03-06T17:20:20.767 に答える