0

2つのテーブルがあります。

1-学生テーブル&2-スコアテーブル

学生テーブルに値を挿入し、SPを使用してスコアテーブルに複数の値をSQLServer2008に挿入したいと思います。

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

私を助けてください...

4

1 に答える 1

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(); 
于 2012-07-11T16:01:06.273 に答える