これはC#とストアプロシージャの両方を使用することができるので、私は緑です。これは本当の学習体験でしたが、私はほとんどそこにいます。私は2つのストアドプロシージャを持っています(最初のものは、2番目のものが完了した後に2番目のものが終了し、ドキュメントIDを返します...新しく作成されたレコードの 'DID'を返します) C#コード。新しいレコードのIDを返すための助けが必要
これは、C#ページの背後にある私のASP.NET Webプロジェクトコードから呼び出すことを目的としています。私は、Microsoft KB記事(kb#320916)のほとんどのロジックをベースにしています。そこにある下のコードセグメントを見ると、自分の参照を引き出しているセクションが表示されます。
私は徹底的に作業していたので、複数のレコードでデータセットを取り戻す部分に着くまでは完璧な意味合いを持っていました。私は自分自身に「ああ、私は困っています!私はちょうど1つの値を持っているので、私は戻ってくる必要があり、その単一の値以上を返すことを期待しない。ちょうどそのレコードID。ここ は、私がこれまで持っているものです。
SqlConnection GETTNewDocs = new SqlConnection("server = gbaptccsr01; database = ARFS; Integrated Security=True");
SqlDataAdapter InsertANewDoc = new SqlDataAdapter("putthedatain", GETTNewDocs);
InsertANewDoc.SelectCommand.CommandType = CommandType.StoredProcedure;
InsertANewDoc.SelectCommand.Parameters.Add(new SqlParameter("@EventID", SqlDbType.VarChar(50)));
InsertANewDoc.SelectCommand.Parameters["@EventID"].Value = (EleIDLBL.Text).Trim();
InsertANewDoc.SelectCommand.Parameters.Add(new SqlParameter("@AltSub", SqlDbType.Int));
InsertANewDoc.SelectCommand.Parameters.["@AltSub"].Value = (Convert.ToInt32(Session["AltSubDocIdx"])+5);
InsertANewDoc.SelectCommand.Parameters["@DID"].Direction = ParameterDirection.Output;
と呼ばれ、データを返すされているストアドプロシージャ自体は、次のようになります。ここfinshラインの上に私をプッシュする
CREATE PROCEDURE [dbo].[NewGETTDoc]
@EventID VARCHAR(50),
@AltSub int,
@DocName VARCHAR(512) = "New",
@new_identity int = NULL OUTPUT,
@param1 VARCHAR(50) = @EventID
AS BEGIN
SET NOCOUNT ON;
INSERT dbo.GETT_Documents(EID, alt_sub_idx, DocName)SELECT @EventID, @AltSub, @DocName;
SET @new_identity = SCOPE_IDENTITY();
EXEC UpdateSubIdx @param1
END
どれでも役立つだろう大変感謝します。私は私がそれを味わうことができるように近いと感じる! SPと呼ばれるパラメータがありませんので、
おかげで、 ケン...
て配置されなければならない '@のDID'は何ですか?あなたはあなたの 'C#'のoutパラメータとしてそれを持っていますが、そのパラメータはあなたのprocで '@ new_identity'と呼ばれています – Kritner
これは助けになるかもしれません:http://stackoverflow.com/questions/7917695/sql-server-return-value-アフターインサート –
あなたの現在のコードはどういったところに間違いがありますか? –