2013-01-08 8 views
20

テーブル値パラメータをオプションパラメータとして使用してプロシージャを作成することは可能ですか?テーブル値オプションパラメータ

私は、次のコードを試してみました:「私は、デフォルト値を持つ、基本的にはC#。ネット

+0

私の答えを見てみましたか?どんなフィードバック? –

+2

@ chuckp16は行く方法です。 'テーブル値のパラメータは、常に空のテーブルの暗黙の値を持ちます。実際にはパラメータを指定せずにそのプロシージャを呼び出すことはできますが、テーブルは空になります。 ' – Lijo

+0

チャックの答えを正しいとマークしてください。 – goodeye

答えて

48

テーブル値パラメータを常に空の表の暗黙的な値を持ちます。したがって、実際にはパラメータなしでそのプロシージャを呼び出すことができ、実行されますが、テーブルは空になります。

したがって、テーブル値パラメータにデフォルト値を付けてラベル付けすることは実際には意味がありません。 "= null"を削除し、テーブルの内容を確認してください。

2

とSQL Serverを使用します。

CREATE PROCEDURE SP 
@Table testteype = null READONLY 
AS 
.... 

をしかし、私はこのエラーを取得する:

Operand type clash: void type is incompatible with test type 

は、ps = null "は意味がなく、エラーの原因です。

デフォルトでは、@Table testteypeは空のテーブルの値を取得します。したがって、あなたは=ヌルを削除することがあります。

CREATE PROCEDURE SP 
@Table testteype READONLY 
AS 
.... 

参考:私はこのポストを使用することをお勧めしますC#のADO.NETでこれを使用する方法のサンプルについて - Using SQL Server’s Table Valued Parameters

0

なぜ上記の答えがデフォルト値= NULLになっているのか分かりませんが、これは私にとってはうまくいきます。

CREATE PROCEDURE SP 
(
    @Param1 VARCHAR(10), 
    @Param2 VARCHAR(10)=NULL 
) 

SELECT...... 
WHERE @Param1 = SOMETHING 
AND (@Param2 = SOMETHING OR @Param2 IS NULL) 
+1

異なる状況。質問は特に*テーブル値*のパラメータに関するものです。それらは、varcharパラメータとは異なります。 – FishBasketGordo

関連する問題