您是否看到这条线明显有问题:
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 一定有问题!在我在这两个地方添加它之前,该代码运行良好。