2016-09-13 17 views
-2

私は@NULLFather' and '@NULLMotherの値を設定するコンボボックスを持っています。コンボボックスがチェックされると、ストアドプロシージャのWHERE句は@NULLFather' and '@NULLMotherの値をチェックし、それに基づいて結果を返します。しかし、私はそれを働かせることはできません。ここにコードがあります。私はまた、ケースの状態を試みたが、まだ成功していない。SQL Serverのストアドプロシージャ(条件付きwhere節)

USE myStudentDB 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[ManualSearchStudents] 
-- Add the parameters for the stored procedure here 

@NullFather int = 1, 
@NullMother int = 1 

AS 
BEGIN 
SET NOCOUNT ON; 

-- Insert statements for procedure here 

SELECT StudentName, FatherName, MotherName 
FROM StudentTable 
WHERE IF(NULLFather > 0) THEN FatherName IS NULL 
    AND IF(NullMother > 0) THEN MotherName IS NULL 
ORDER BY StudentTable.StudentID DESC 
END 
+0

'(@NullFather = 0 OR FatherName IS NULL)してみてくださいAND(@NullMother = 0 OR MotherName IS NULL)>' – TZHX

+0

が@NullFatherの値ならばそれは作品しようとしました0しかし、ときに:ここでは、コードです値は0ですが、結果は表示されません – Quest

+0

EFのようなORMを使用してLINQを使ってそのようなクエリを作成する方がはるかに簡単です。 SQL Serverは、実行計画を最初の実行から、その実行パラメータに基づいてキャッシュするため、「オプションのパラメータ」ではパフォーマンス上の利点は得られません。 –

答えて

0

私は別のソリューション実装:

まずストアドプロシージャを呼び出すとのdataTableに保存します。コンボボックスからSQL文の文字列を生成します。新しいSQL文字列をdataTableに適用します。問題が解決しました。これを適用し、それは素晴らしい動作します。

​​