いくつかの変数とネストされたifステートメントでストアドプロシージャを作成しました。 私のプログラムからストアドプロシージャを呼び出し、返された値の返されたデータセットをチェックすると、その中にレコードがあるはずの私のデータセットは空です。いくつかのテストの後、if文(@PoolID = 0)がテストされ、@PoolIDが0の場合、if文には通らないことに気がつきました...私のコードで変数poolidを0に設定すると、 elseステートメントの結果...SQLストアドプロシージャ(@variable = 0)が機能しない場合
何がうまくいかないのを知っている人は誰ですか? Thxを
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Pool_select]
@PartnerCode nvarchar(8),
@GebrID int,
@PoolID int,
@Bevoegdheid int
AS
IF (@PoolID = 0)
BEGIN
IF (@Bevoegdheid < 3)
BEGIN
SELECT
p.*,
pr.poolrecht
FROM racpPool p, racpPoolrecht pr
WHERE
p.poolid = pr.poolid and
p.PartnerCode = @PartnerCode and
pr.poolrecht > 0 and
p.actief = 1 and
pr.GebrID = @GebrID
END
ELSE
BEGIN
SELECT *
FROM racpPool p
WHERE standaardpool = 1
and partnercode = @PartnerCode
END
END
ELSE
BEGIN
IF (@Bevoegdheid < 3)
BEGIN
SELECT
p.*,
pr.poolrecht
FROM racpPool p, racpPoolrecht pr
WHERE
p.poolid = pr.poolid and
p.PartnerCode = @PartnerCode and
pr.poolrecht > 0 and
p.actief = 1 and
pr.GebrID = @GebrID and
p.PoolID = @PoolID
END
ELSE IF (@Bevoegdheid >= 3)
BEGIN
SELECT *
FROM racpPool p
WHERE PoolID = @PoolID
END
END
@PoolIDはゼロですか?あなたはSSMSでそれを実行する場合、期待どおりの結果を得るのですか? – Paddy
あなたの他の変数についても確かですか? 'ELSE'では' @ Partnercode'をフィルタリングしませんが、 'IF'の上に... – JNK
SQL Server Profilerを実行して、実際に何がプロシージャに送られているのか確認しましたか? – Brandon