0
私は2つのパラメータを渡しているストアドプロシージャを持っています。 1つのパラメータはテーブル値のパラメータであり、もう1つはnvarcharです。ここではストアドプロシージャです:SQLストアドプロシージャ - 内部的にパラメータを使用
ALTER PROCEDURE [dbo].[_sp_TestProc]
@P1 As [dbo].[FileIdTableType] Readonly,
@P2 As NVARCHAR (MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT [Field1], [Field2], [Field3]
FROM [MyTable] WHERE [Field1] IN (@P1)
AND [Field2] IN (@P2)
END
はコードから、私はその後、@ P1としての私のDataTableに渡し、それは私の問題を引き起こしているの@ P2だ
"'Value1', 'Value2', 'Value3', 'Value4'"
のように見えるの@ P2などの値の文字列をしています。テーブルタイプは正常に動作します。通常、このようなパラメータをストアドプロシージャで使用する場合、内部的に文字列を作成し、パラメータに文字列をフォーマットしてから、sp_executeSqlを呼び出してクエリを実行します。ただし、これはテーブル値のパラメータを使用する場合は機能しません。
誰もがこのようにnvarcharと一緒にテーブル値のパラメータを扱う方法を知っていますか?私はこれを正しくフォーマットしようとすると何かシンプルなものが欠けていると確信しています。 おかげで、
-Scott
IN句にnvarcharパラメータを使用するのは、動的SQL文を作成する場合にのみ可能です。これは一般的には良い考えではありません。文字列を分割して、一時テーブル/テーブル変数に挿入することができます。 –