0

ストアドプロシージャからテーブル(ユーザー定義型)に挿入して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
)
4

2 に答える 2

0

出力パラメータとしてデータテーブルを返す方法はありません。xp から c# にテーブルの結果を返す唯一の方法は、xml パラメーターを使用するか、次の方法のいずれかです。

SQL スクリプト:

create procedure sp_returnTable
    body of procedure
    **select * from RegisterChoiceUserInitial**
end

サンプル C# コード:

   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();
}
于 2012-05-03T07:07:10.530 に答える
0

型のシリアル化/逆シリアル化を行い、シリアル化されたオブジェクトの文字列をSQLに書き込み、それを取得する必要があるときに、テーブルから文字列を読み取り、それを型に逆シリアル化する必要があります。

編集

シリアル化については、ここで読むことができます

于 2012-05-02T14:04:28.073 に答える