Obtiene el valor SCOPE_IDENTITY al insert loggings masivos para SQL TableType

Tengo la siguiente estructura de tabla, para fines de conveniencia solo estoy marcando columnas individuales

  • Table_A ( Id, Name, Desc )
  • Table_1 ( Id esto es columna de identidad , Name ….)
  • Table_2 ( Id this is identity column , Table_A_Id , Table_1_Id )

La relación entre Table_1 y Table_2 es 1...*

Ahora he creado un tipo de tabla para Table_A llamada TType_Table_A (que solo contiene Id como columna y desde mi aplicación C # envío varios loggings). He logrado esta funcionalidad de inserción masiva según lo deseado.

Lo que necesito es cuando inserte loggings en Table_2 desde TType_Table_A decir con las declaraciones a continuación, me gustaría capturar el Id de Table_2 para cada logging insertado

 declare @count int = (select count(*) from @TType_Table_A); --a variable declanetworking for TType_Table_A if(@count > 0) begin insert into Table_2(Table_A_Id,Table_1_Id) SELECT @SomeValue, @SomeValueAsParameter FROM @TType_Table_A; end; 

Ahora diga si se inserton 2 loggings, me gustaría capturar el Id para cada uno de estos 2 loggings.

Cualquier input / ayuda es apreciada

Esto es lo que sé cómo se puede lograr, pero quiero networkingucir las llamadas a bases de datos desde mi aplicación o el cursor del usuario en el procedimiento almacenado

Inserte el logging en Table_1 y devuelva el Id Loop ….. a través de los loggings e inserte el logging en Table_2 y devuelva el Id.

O

Use el cursor en el procedimiento almacenado al insert / seleccionar de TableType

Supongo que este es el server Sql? Entonces puedes hacer uso de la cláusula OUTPUT, así:

 declare @NewId table (MyNewId INT) insert into Table_2(Table_A_Id,Table_1_Id) output INSERTED.MyNewId INTO @TempTable(MyNewID) SELECT SomeValue, SomeValueAsParameter FROM @TType_Table_A; SELECT * FROM @NewId