我有两张桌子。
1-学生表& 2-分数表
我想在学生桌上插入价值&在带有SP到SQL Server 2008的Score表中插入多值。
表示EX:
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
请帮帮我......
答案 0 :(得分:0)
为要传递的表格创建一个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();