Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从存储过程插入表(用户定义类型)并传递给c_C#_Sql_Sql Server 2008_C# 4.0 - Fatal编程技术网

C# 如何从存储过程插入表(用户定义类型)并传递给c

C# 如何从存储过程插入表(用户定义类型)并传递给c,c#,sql,sql-server-2008,c#-4.0,C#,Sql,Sql Server 2008,C# 4.0,如何将用户定义的类型从存储过程插入到表中并传递到c 表结构: 用户定义类型: 您应该对您的类型进行序列化/反序列化,并将序列化对象的字符串写入SQL,然后在需要获取它时,从表中读取字符串并将其反序列化为您的类型 编辑 关于serialize您可以在这里阅读他们使用serialize to file,但将其转换为string并不难无法将datatable作为输出参数返回。将表结果从xp返回到c的唯一方法是使用XMLParam或以下方式 sql脚本: 示例c代码: CREATE TABLE [dbo

如何将用户定义的类型从存储过程插入到表中并传递到c

表结构:

用户定义类型:


您应该对您的类型进行序列化/反序列化,并将序列化对象的字符串写入SQL,然后在需要获取它时,从表中读取字符串并将其反序列化为您的类型

编辑


关于serialize您可以在这里阅读他们使用serialize to file,但将其转换为string并不难

无法将datatable作为输出参数返回。将表结果从xp返回到c的唯一方法是使用XMLParam或以下方式

sql脚本:

示例c代码:

CREATE TABLE [dbo].[RegisterChoiceUserInitial](
    [RegisterChoiceUserInitialID] [int] IDENTITY(1,1) NOT NULL,
    [UserId] [uniqueidentifier] NOT NULL,
    [RegisterChoiceUserInitialJob] [nvarchar](50) NULL,
    [RegisterChoiceUserInitialOrganization] [nvarchar](50) NULL,
    [RegisterChoiceUserInitialUnit] [nvarchar](50) NULL,
    [RegisterChoiceUserInitialMembershipType] [nvarchar](50) NULL,
    [RegisterChoiceUserInitialStart] [nvarchar](10) NULL,
    [RegisterChoiceUserInitialEnd] [nvarchar](10) NULL,
 CONSTRAINT [PK_RegisterChoiceUserInitial] PRIMARY KEY CLUSTERED 
(
    [RegisterChoiceUserInitialID] ASC
)
CREATE TYPE [dbo].[TableTypeInitial] AS TABLE(
    [ID] [int] NULL,
    [InitialJob] [nvarchar](50) NULL,
    [InitialOrganization] [nvarchar](50) NULL,
    [InitialUnit] [nvarchar](50) NULL,
    [InitialMembershipType] [nvarchar](50) NULL,
    [InitialMembershipStart] [nvarchar](10) NULL,
    [InitialMembershipEnd] [nvarchar](10) NULL
)
create procedure sp_returnTable
    body of procedure
    **select * from RegisterChoiceUserInitial**
end
   string connString = "<your connection string>";
    string sql = "name of your sp";

SqlConnection conn = new SqlConnection(connString);

try {
   SqlDataAdapter da = new SqlDataAdapter();
   da.SelectCommand = new SqlCommand(sql, conn);
   da.SelectCommand.CommandType = CommandType.StoredProcedure;

   DataSet ds = new DataSet();   
   da.Fill(ds, "result_name");

   DataTable dt = ds.Tables["result_name"];

   foreach (DataRow row in dt.Rows) {
               //manipulate your data
   }

} catch(Exception e) {
   Console.WriteLine("Error: " + e);
} finally {
   conn.Close();
}