0

オプションの引数を持つストアドプロシージャが必要です。デフォルト値は、私がCOALESCEMsSqlサーバー:ストアドプロシージャの既定のbigint引数

COALESCE(@itemID, table.itemID) = table.itemID 

でそれを使用したいその後

CREATE PROCEDURE [myStoredProcedure](@itemID bigint = NULL) 

nullの場合、このアプローチは、オプションの引数を使用するための正しいですか?これはOracleでも同じですか?

+1

パフォーマンスの面では、論理的な分離を行う方が良いです。たとえば、IF(@itemID IS NULL)BEGIN文1 END ELSE BEGIN文2 END –

+0

詳細については、[T-SQLの動的検索条件](http://www.sommarskog.se/dyn-search-2008)を参照してください。 html)。 [前の回答で](https://stackoverflow.com/a/18697104/1048425)私は、Dmitrijが「IF/EKSE」を使用したことについて詳しく述べた作業例を行っています。 – GarethD

答えて

2

あなたがCOALESCE()を使用できますが、私は明示的な比較は、より典型的なものであると思う:どちらか

where (t.itemId = @itemId or @itemId is null) 

両方が標準SQLであるため、この方法は、SQL ServerまたはOracleで動作します。 Oracleでは、パラメータは@で始まらず、ストアドプロシージャの構文は大きく異なる場合があります。

関連する問題