0
DataTableをSQLクエリに追加する必要があります。DataTableをSQLのパラメータとして追加
queryText = @"
WITH TaskDataTable AS
(
SELECT *
FROM @dataTable
)
INSERT INTO {0}.dbo.Tasks_Projects_PIR
...
FROM
TaskDataTable as TaskDataTable
LEFT JOIN dbo.MSP_EpmTask_UserView as t1
ON 1 = 1";
using (SqlCommand sqlCommand = new SqlCommand(queryText, ConfigurationProvider.sqlConnection))
{
sqlCommand.CommandType = CommandType.Text;
sqlCommand.Parameters.AddWithValue("eventUID", eventUid);
SqlParameter parameter = sqlCommand.Parameters.AddWithValue("@dataTable", dataTable);
parameter.TypeName = "dbo.Tasks_Projects_PIR";
parameter.SqlDbType = SqlDbType.Structured;
sqlCommand.ExecuteNonQuery();
}
DataTableを作成コード:
列、パラメータ、または変数@dataTable:
DataTable myTvpTable = new DataTable("taskDataTable"); myTvpTable.Columns.Add("TaskUid", typeof(string)); myTvpTable.Columns.Add("TaskPredecessors", typeof(string)); myTvpTable.Columns.Add("TaskSuccessors", typeof(string)); foreach (ProjectDataSet.TaskRow taskRow in DataSetMaster.projectDS.Task) { var predecessors = string.Empty; var successors = string.Empty; PSIWorker.GetPredecessorsAndSuccessors(taskRow, out predecessors, out successors); DataRow row = myTvpTable.NewRow(); row["TaskUid"] = taskRow.TASK_UID.ToString(); row["TaskPredecessors"] = predecessors; row["TaskSuccessors"] = successors; myTvpTable.Rows.Add(row); }
私は次のエラーを持っています。 :データ型* dbo.Tasks_Projects_PIRが見つかりません。
私はparameter.TypeName
を設定しない場合
または、:
テーブル型パラメータ 'のdataTable' は有効なタイプ名を持つ必要があります。
DataTableをパラメータとして使用できますか?
は、SqlDataReaderのは、私を助けることができるどのように 'SqlDataReader' – styx
からの値を使用して、テーブルを埋めるために' DataTable.Load'メソッドを使用しますか? – DeRibura
私は何かobject = parameter.TypeNameをデータベースに持つべきですか?どのようなオブジェクトが必要ですか? – DeRibura