2009-11-27 8 views
76

私はSQL Server 2008に格納されているprocsをいくつか書いていますが、オプションの入力パラメータの概念がここでは可能かどうか疑問に思っていますか?SQL Serverのオプションのパラメータにprocが格納されていますか?

私はいつも私が使用したくないパラメータのためにNULLを渡すことができたと思います。ストアドプロシージャの値をチェックしてそこから物事を取ってください。ありがとう!

+1

のように宣言することができます。http://www.sommarskog.se/dyn-search.html –

答えて

140

あなたが長いErlandのサイトで読んで、彼は動的な検索条件のいくつかの素晴らしい情報を持っています。この

CREATE PROCEDURE MyProcName 
    @Parameter1 INT = 1, 
    @Parameter2 VARCHAR (100) = 'StringValue', 
    @Parameter3 VARCHAR (100) = NULL 
AS 

/* check for the NULL/default value (indicating nothing was passed */ 
if (@Parameter3 IS NULL) 
BEGIN 
    /* whatever code you desire for a missing parameter*/ 
    INSERT INTO ........ 
END 

/* and use it in the query as so*/ 
SELECT * 
FROM Table 
WHERE Column = @Parameter 
+0

両方のお返事ありがとう! – larryq

+0

パラメータがuniqueidentifierのタイプの場合はどうなりますか?例。 @userId uniqueidentifier –

+1

@RKSharmaにも不思議に思っている人には - uniqueidentifierと全く同じ働きをします。 – rinukkusu

41

はい、そうです。ようにパラメータを宣言します。

@Sort varchar(50) = NULL 

今すぐあなたもでパラメータを渡す必要はありませんそれはNULLにデフォルト設定されます(またはあなたがするようにデフォルトすることを選択したものは何でも)。

+0

あなたを'= NULL'を必要としません –

+3

本当に必要ないのですか? –

+32

OMG Ponies、= を含まない場合は、パラメータが必要です。 NULLとして渡すことはできますが、そのロジックをプロシージャを使用するアプリケーションに移すだけです。 –

関連する問題