sql-server-2008 - sql表 udt,vs 2008,csharp

  显示原文与译文双语对照的内容
0 0

我试图从 Visual Studio 2008运行一个SQL存储过程,它采用一个表值UDT参数作为输入。 这个函数是 Visual Studio的,但是当我运行这个程序时,它会得到一个"argumentexception - 指定类型不能在目标服务器上注册。",所以我会在 Visual Studio 2008中创建一个与这个表类型的属性相匹配的新类。 但在internet上找不到包含表 udt的任何示例 我尝试了所有的标量UDT示例,但是我不确定如何修改它们以使它的基于表。
我也读过我可以能需要创建一个程序集,尽管我不知道这是否只是将类型导入 SQL Server 2008. 但是,我看不到从 vs 2008中的服务器资源管理器列出的任何类型,尽管我看到了数据库及它 我尝试刷新数据库,但这些类型仍然没有显示。 我需要做的就是简单。 我有一个类似这样的表 UDT:


CREATE TYPE [dbo].[parseInputFile] AS TABLE(
[NumCols] [int] IDENTITY(1,1) NOT NULL,
[strRow] [varchar](500) NOT NULL,
PRIMARY KEY CLUSTERED

我的C# 代码中的代码Fragment是:


 public static int AppendData(string[] myStringArray)
 {
 SqlConnection conn = new SqlConnection(connString);
 SqlCommand cmd = conn.CreateCommand();
 cmd.CommandText ="dbo.uspAppendTableFromInput";
 cmd.CommandType = CommandType.StoredProcedure;
 cmd.Connection = conn;
 SqlParameter param = cmd.Parameters.Add("@InputFileParam", SqlDbType.Udt);
 param.UdtTypeName ="AdventureWorks.dbo.parseInputFile";
 param.Value = myStringArray;
 conn.Open();
 RowsAffected = cmd.ExecuteNonQuery();

RowsAffected在运行这里命令后显示零行。 我丢失了什么你能指向一个演示这个简单例子的网站。 或者给我点提示? 我还尝试了上述Fragment的'参数。udttypename="parseinputfile";',但这返回了相同的错误。 顺便说一下,"myStringArray"实际上是一个表。 这是一连串的字符串。 比如 myStringArray [0] ="hello|bob|how|do",myStringArray [1] ="i |am| fine|and"等。

时间: 原作者:

0 0

基本上,你的设置几乎是在一半的时候

我想你想用的是那些introductory的文章,这是我猜你正在尝试使用的东西,没错?

基本上你需要做的就是:

  • 创建用户定义的表类型- 你已经
  • 创建一个存储过程,它将这些表类型作为只读输入参数( 不确定你是否已经看到代码) 。
  • 要从. NET 调用,需要创建一个DataTable实例并重新创建相同的结构( 在字段和它们的类型中) 。
  • 填充数据表
  • 使用( CommandType = 存储过程的) 中定义表类型参数的.NET 创建sql语句和 sql SqlCommand,并将它的值设置为上面创建的DataTable
  • 从. NET 调用存储过程( 。在 sql command中打包)

这对你有帮助? 我强烈推荐SQL团队文章- 非常有用 !

Marc

原作者:
...