この行に露骨に何か間違っていることがわかりますか?
commaSepString1 = com.Parameters["@CommaSepString"].Value.ToString();
次のようなエラーが表示されます。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
簡単に言うと、C#メソッドは次のようになります。
public static DataTable GetFilmDetails(string filmId, out string
commaSepString1)
次のストアドプロシージャが必要です(それ自体で正しく実行されます)。
com.CommandText = "CatalogGetFilmDetails2";
@CommaSepStringはストアドプロシージャの出力パラメータであるため、C#では次のようになります。
param = com.CreateParameter();
param.ParameterName = "@CommaSepString";
param.Direction = ParameterDirection.Output;
param.DbType = DbType.String;
com.Parameters.Add(param);
commaSepString1 = com.Parameters["@CommaSepString"].Value.ToString();
ストアドプロシージャについて知りたい場合は、次のように開始します。CREATE PROCEDURE CatalogGetFilmDetails2
(@FilmID int, @CommaSepString VARCHAR(50) OUTPUT) AS
SPは、いくつかの結合に基づいていくつかの行をテーブル変数に挿入し、そのテーブルの列xのすべての値を、コンマで区切られた値を持つ文字列に入れます。
SELECT @CommaSepString = STUFF((SELECT ', ' + Categ FROM @Filme1 FOR XML PATH('')), 1,1,'')
次に、テーブルを選択します。
これをお読みいただき、誠にありがとうございます。ストアドプロシージャとC#メソッドのコード全体を公開した方が明確でしょうか?私がそれを許可されているかどうかわからず、読むには長すぎるのではないかと心配しています。
PS:commaSepStringに何か問題があるはずです!両方の場所に追加する前に、コードは完全に機能しました。