0

行をテーブルに挿入し、新しく作成された ID を選択して、ストアド プロシージャを作成しなくてもクラシック ASP (JScript) に戻せるようにしたいと考えています。それはできますか?

基本的には次のようなものです:

...
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
Response.Write(rs("x").Value);

以下は機能しますが、データベースへの 2 回のトリップになります。

...
objConn.Execute("INSERT INTO ...
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("SELECT SCOPE_IDENTITY() x;", objConn, ...
Response.Write(rs("x").Value);
4

2 に答える 2

1

最初に挿入の影響を受けた行数を受け取り、次に ID 値を受け取っていると思います。レコードセットにアクセスする前に使用SET NOCOUNT ONまたは使用できます。rs.MoveNext例えば

   rs = Server.CreateObject("ADODB.RecordSet");
    rs.Open("SET NOCOUNT ON;INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
    Response.Write(rs("x").Value);

また

rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
rs.MoveNext()
Response.Write(rs("x").Value);
于 2013-06-10T10:29:18.840 に答える