4

私はこの素晴らしいpyodbclibを持っています。以下のコードを試してみました。行を挿入して行IDを返すはずですが、機能しませんでした。ちなみに私はサーバー上でSQLServer2005を使用しており、クライアントはWindowsOSです。

...
con = pyodbc.connect('conectionString', autocommit = True)
cur = con.execute(
                  "insert into sometable values('something');
                  select scope_identity() as id"
                  )
for id in cur:
   print id
...

いくつかのアイデア?

4

2 に答える 2

6

これを試してください。OUTPUT句を含む1つのステートメント

cur = con.execute(
         "insert into sometable OUTPUT INSERTED.idcolumn values('something')"
         )

編集:これは、ジョーSによってコメントされた問題を回避する必要があります。

于 2010-12-23T18:57:33.783 に答える
1

SCOPE_IDENTITY()を使用するのが、トリガーのためにOUTPUTと@@IDENTITYを使用する際の制限と癖があるためです。

切り取ったコードを使用して、IDを取得するためにnextsetへの呼び出しを追加する必要があります。

...
con = pyodbc.connect('conectionString', autocommit = True)
cur = con.execute(
                  "insert into sometable values('something');
                  select scope_identity() as id"
                  )
cur.nextset()
for id in cur:
   print id
...
于 2020-06-20T20:28:56.540 に答える