Я использую пользовательский тип таблицы в качестве параметра в процедуре, и у этой пользовательской таблицы есть столбец Id
, для которого установлен флаг identity
.
Проблема:
CREATE TYPE [dbo].[UdtTable] AS TABLE
(
[Id] [INT] IDENTITY(1, 1),
[StudentId] [INT] NOT NULL
)
При непосредственном выполнении моей процедуры в SQL Server она работает, но когда я вызываю эту процедуру из кода C #, она не работает, но также не выдает никаких ошибок.
Этот запрос работает нормально:
DECLARE @TableUDT [UdtTable];
INSERT INTO @TableUDT
SELECT 201;
INSERT INTO @TableUDT
SELECT 202;
EXEC MYProcName @TableUDT
Но это не работает:
DataTable udtDataTable = new DataTable();
udtDataTable.Columns.Add("StudentId");
DataRow dRow = udtDataTable.NewRow();
dRow["StudentId"] = 201
udtDataTable.Rows.Add(dRow)
DataRow dRow2 = udtDataTable.NewRow();
dRow2["StudentId"] = 201
udtDataTable.Rows.Add(dRow2)
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@TableLeaveID", udtDataTable));
DataTable = new DML.RunProcedure("MyProcName",parameters);
Примечание : в соответствии с моей процедурой должна возвращаться таблица.