テーブル値パラメータをオプションパラメータとして使用してプロシージャを作成することは可能ですか?テーブル値オプションパラメータ
私は、次のコードを試してみました:「私は、デフォルト値を持つ、基本的にはC#。ネット
テーブル値パラメータをオプションパラメータとして使用してプロシージャを作成することは可能ですか?テーブル値オプションパラメータ
私は、次のコードを試してみました:「私は、デフォルト値を持つ、基本的にはC#。ネット
テーブル値パラメータを常に空の表の暗黙的な値を持ちます。したがって、実際にはパラメータなしでそのプロシージャを呼び出すことができ、実行されますが、テーブルは空になります。
したがって、テーブル値パラメータにデフォルト値を付けてラベル付けすることは実際には意味がありません。 "= null"を削除し、テーブルの内容を確認してください。
と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
なぜ上記の答えがデフォルト値= NULLになっているのか分かりませんが、これは私にとってはうまくいきます。
CREATE PROCEDURE SP
(
@Param1 VARCHAR(10),
@Param2 VARCHAR(10)=NULL
)
SELECT......
WHERE @Param1 = SOMETHING
AND (@Param2 = SOMETHING OR @Param2 IS NULL)
異なる状況。質問は特に*テーブル値*のパラメータに関するものです。それらは、varcharパラメータとは異なります。 – FishBasketGordo
私の答えを見てみましたか?どんなフィードバック? –
@ chuckp16は行く方法です。 'テーブル値のパラメータは、常に空のテーブルの暗黙の値を持ちます。実際にはパラメータを指定せずにそのプロシージャを呼び出すことはできますが、テーブルは空になります。 ' – Lijo
チャックの答えを正しいとマークしてください。 – goodeye