Видел много примеров передачи значений массива в хранимую процедуру с использованием табличного параметра, и я следовал тому же, но значения не вставляются в таблицу. Здесь я должен отправить массив строк, имеющих некоторые идентификаторы и значение int. Мне нужно вставить полные значения массива с этим уникальным идентификатором.
Контроллер
[HttpPost]
public JsonResult AssignGod(int id,string[] g)
{
SqlConnection con = null;
try
{
con = GetSqlConnectionObject(cs);
DataTable dt_god = new DataTable();
dt_god.Columns.Add("gods", typeof(String));
dt_god.Columns.Add("tid", typeof(Int32));
DataRow workRow;
foreach (string cat in g)
{
workRow = dt_god.NewRow();
workRow["gods"] = cat.Trim();
workRow["tid"] = id;
dt_god.Rows.Add(workRow);
}
SqlCommand cmd = new SqlCommand("AssignGod", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvparam = cmd.Parameters.AddWithValue("@templegod", dt_god);
tvparam.SqlDbType = SqlDbType.Structured;
cmd.ExecuteNonQuery();
string result = "success";
return Json(result, JsonRequestBehavior.AllowGet);
}
catch
{
throw;
}
finally
{
CloseSqlConnectionObject(con);
}
return Json("asa", JsonRequestBehavior.AllowGet);
}
Хранимая процедура
CREATE TYPE dbo.TempleGod AS TABLE
(gods NVARCHAR(200),tid int);
go
ALTER PROC [dbo].[AssignGod]
@templegod AS [dbo].TempleGod READONLY
AS
BEGIN
SET NOCOUNT ON;
BEGIN
BEGIN
INSERT dbo.TempleGod(templeid,gid) SELECT tid,gods FROM @templegod
END
END
While am running this code its not showing any error but the table remains empty
[![Table must be like this][1]][1]