4

私はmssqlテーブルPRODUCTSを持っています。また、ID(int)、NAME(nvarchar)、TSTAMP(timestamp)の3つの列があります。

新しく挿入された行のIDとタイムスタンプの両方を取得したい(複数のselect scope_identityのように)。私は次のようにSQLでそれを達成することができます:

INSERT INTO PRODUCTS (NAME)
OUTPUT inserted.ID,inserted.TSTAMP
VALUES ('Example Product')

しかし、挿入時にsqlclient.sqlcommadを使用してvb.netでそれを読み取るにはどうすればよいですか?sqlcommandのどの関数をどのように使用する必要がありますか?ExecuteReader多分?

4

1 に答える 1

2

SqlCommandExecuteReader()メソッドを使用すると、 SELECTの場合と同じように機能します。

OUTPUT句はSELECTステートメントのように機能しますが、INSERT、UPDATE、およびDELETEコマンドでは使用法が異なります。

これがサンプルコードです。それを試してみてください。

Dim connString As String = "server=Test; database=Test;" + _
                           "uid=sa; pwd="
Dim conn As New SqlConnection(connString)

Dim cmdString As String = "INSERT INTO PRODUCTS (NAME) " + _
                          "OUTPUT inserted.ID,inserted.TSTAMP " + _
                          "VALUES ('Example Product')"
Dim cmd As New SqlCommand(cmdString, conn)
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
conn.Close()

ここにいくつかのリンクがあります

C#からのOUTPUT句の実行

SQLServer2008でのOUTPUT句の実装

于 2012-09-04T07:31:45.637 に答える