0

質問はそれをすべて言います。例として Python API を使用します。

import ibm_db
#setup stuff
conn = ibm_connect(DATABASE, user, password)
stmt = ibm_db.exec_immediate(conn, 'DELETE FROM sometable')
print(ibm_db.num_rows(stmt)) # prints -1

削除された実際の行数を出力しないのはなぜですか?

4

2 に答える 2

0

これは実際には答えではなく、関数が機能し、SQLCODE が Python 例外を引き起こすことを示しているだけです。機能しないという事実num_rows()は、接続しているデータベースで機能がサポートされていない可能性があることを示している可能性があります。DB2 サーバーのバージョンとプラットフォーム、ローカル データベースかリモート データベースか、DB2 クライアントのバージョン (サーバーと異なる場合) など、環境を詳細に説明することもできます。

  >>> import ibm_db
  >>> conn = ibm_db.connect('TEST',user,password)
  >>> stmt = ibm_db.exec_immediate(conn, 'create table t (f int)')
  >>> print ibm_db.num_rows(stmt)  # DDL statement - num_rows not applicable
  -1
  >>> stmt = ibm_db.exec_immediate(conn,'delete from t')
  >>> print ibm_db.num_rows(stmt)  # 0 rows deleted
  0
  >>> stmt = ibm_db.exec_immediate(conn,'delete from x')  # nonexistent table - exception
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  Exception: [IBM][CLI Driver][DB2/LINUXX8664] SQL0204N  "USER.X" is an undefined name.  SQLSTATE=42704 SQLCODE=-204
  >>> stmt = ibm_db.exec_immediate(conn,'insert into t(f) values (1),(2),(3)')
  >>> print ibm_db.num_rows(stmt)  # 3 rows inserted
  3
  >>> stmt = ibm_db.exec_immediate(conn,'delete from t')
  >>> print ibm_db.num_rows(stmt)  # 3 rows deleted
  3
  >>> ibm_db.close(conn)
  True
  >>> 
于 2013-06-13T14:28:46.670 に答える
0

DB2 の負の SQL コードはエラーを意味します: SQL コード

于 2013-06-13T14:13:44.840 に答える