Tag: 表值参数

将空列表或空值绑定到存储过程(.net)上的表值参数

我创build了一个存储过程,该过程使用一个表值参数,该表是具有inttypes的单个列的表。 这个想法是简单地将一个id列表传入存储过程,并允许sp处理数据。 但是,在没有数据通过的情况下,我遇到了问题(当我有数据时,事情正常工作)。 我将List转换为IEnumerable,并将其绑定到sp的表值参数。 我试图绑定一个空列表,导致错误 System.ArgumentException:在SqlDataRecord枚举中没有logging。 要发送没有行的表值参数,请改用该值的空引用。 然后我试图绑定一个空值(我认为是上面的消息得到的),但只会导致一个不同的错误信息 System.NotSupportedException:不支持参数“@MainItemIdList”的DBNull值。 表值参数不能是DBNull。 在sp声明中,您似乎没有声明表值参数可以为空。 将空列表绑定到表值参数的正确方法是什么?

entity framework存储过程表值参数

我试图调用一个接受表值参数的存储过程。 我知道,这不是直接支持在entity framework,但从我的理解,你可以使用ExecuteStoreQuery命令closures的ObjectContext 。 我有一个通用的entity framework库,我有以下ExecuteStoredProcedure方法: public IEnumerable<T> ExecuteStoredProcedure<T>(string procedureName, params object[] parameters) { StringBuilder command = new StringBuilder(); command.Append("EXEC "); command.Append(procedureName); command.Append(" "); // Add a placeholder for each parameter passed in for (int i = 0; i < parameters.Length; i++) { if (i > 0) command.Append(","); command.Append("{" + i + "}"); } return […]

如何从.net代码传递表值参数到存储过程

我有一个MS SQL Server 2005数据库。 在几个过程中,我有表参数,我把它传递给一个存储过程作为一个nvarchar(用逗号分隔)和内部分为单个值。 我将它添加到SQL命令参数列表中,如下所示: cmd.Parameters.Add("@Logins", SqlDbType.NVarchar).Value = "jim18,jenny1975,cosmo"; 我必须将数据库迁移到SQL Server 2008.我知道有表值参数,我知道如何在存储过程中使用它们。 但我不知道如何传递一个SQL命令中的参数列表。 有没有人知道正确的Parameters.Add程序语法? 还是有另一种方式来传递这个参数?

为什么在列表<>中添加新值会覆盖列表<>中的以前的值

继几个教程后,我能够成功创build一个集合类,它inheritance创build一个DataTable所需的function,该DataTable可以作为表值parameter passing给Sql Server的存储过程。 一切似乎都运作良好; 我可以添加所有行,看起来很漂亮。 但是,仔细观察后,我注意到当我添加一个新行时,所有前面的行的数据被新行的值覆盖。 所以,如果我有一个string值为“foo”的行,并添加了第二行的值“bar”,第二行将被插入(使两行DataTable),但两行将有值“bar ”。 任何人都可以看到这是为什么? 下面是一些代码,它的工作原理虽然简单一些(为了便于说明,标签类已经缩小了)。 以下是Collection类的: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using Microsoft.SqlServer.Server; namespace TagTableBuilder { public class TagCollection : List<Tag>, IEnumerable<SqlDataRecord> { IEnumerator<SqlDataRecord> IEnumerable<SqlDataRecord>.GetEnumerator() { var sdr = new SqlDataRecord( new SqlMetaData("Tag", SqlDbType.NVarChar) ); foreach (Tag t in this) { sdr.SetSqlString(0, t.tagName); yield return […]