Stored procedures 使用SP插入多值

Stored procedures 使用SP插入多值,stored-procedures,sql-server-2008-r2,Stored Procedures,Sql Server 2008 R2,我有两张桌子 1-学生表和2-分数表 我想在student表中插入值,并在带有SP的Score表中向sqlserver2008插入多值 例如: ALTER proc [dbo].[InsertIntoScore] ( @DateReg datetime, @stdLastName nvarchar(50), @stdFirstName nvarchar(50), @Description nvarchar(500), multi value as score table... ) AS DEC

我有两张桌子

1-学生表和2-分数表

我想在student表中插入值,并在带有SP的Score表中向sqlserver2008插入多值

例如:

ALTER proc [dbo].[InsertIntoScore]
(
@DateReg datetime,
@stdLastName nvarchar(50),
@stdFirstName nvarchar(50),
@Description nvarchar(500),

multi value as score table...
)
AS
DECLARE @Id AS INT
BEGIN TRY
BEGIN TRANSACTION
    INSERT INTO Student(DateReg,stdLastName,stdFirstName,[Description])
    VALUES (@DateReg,@stdLastName,@stdFirstName,@Description)
set @Id = SCOPE_IDENTITY() 

    insert multi value at Score table...    
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
    ROLLBACK
END CATCH
请帮帮我…

你应该使用

为要传入的表创建Sql类型

CREATE TYPE dbo.ScoreType AS TABLE ( ScoreID int, StudentID int, etc.... ) 
使用上述定义的类型将数据表从C#代码传递到存储过程中

ALTER proc [dbo].[InsertIntoScore] 
( @DateReg datetime, @stdLastName nvarchar(50), @stdFirstName nvarchar(50), 
@Description nvarchar(500),  @tvpScore ScoreType) 
AS 
   .....
   INSERT INTO dbo.Score (ScoreID, StudentID, ....)     
   SELECT dt.ScoreID, @id, .... FROM @tvpScore AS dt; 
在c#中,以这种方式传递数据表

SqlCommand insertCommand = new SqlCommand("InsertIntoScore", sqlConnection); 
SqlParameter p1 = insertCommand.Parameters.AddWithValue("@tvpScore", dtScore); 
p1.SqlDbType = SqlDbType.Structured; 
p1.TypeName = "dbo.ScoreType"; 
.....
insertCommand.ExecuteNonQuery(); 

我无法在@tvpScore ScoreType中使用ScoreType。我应该在哪里写这段代码?创建类型dbo.ScoreType…您可以在计划插入数据的SqlServer中创建它。使用SQLServerManagementStudio。并记住定义要传递给存储过程的表的所有字段。