7 Oracle MySQLクライアント・ライブラリ・ドライバのAPIリファレンス
MySQLからの移行をサポートするAPI、データ型のマッピング、OracleでサポートされるMySQLの特定のAPI、および移行したアプリケーションのエラー処理について詳しく見ていきます。
MySQL C APIのドキュメントについては、MySQL 5.5のドキュメントを参照してください。
データ型のマッピング
Oracleデータベースの型については、『Oracle Call Interfaceプログラマーズ・ガイド』の内部データ型に関する項に記載されています。
MySQLのデータ型はすべてMySQLのドキュメントに記載されています。
MySQL C APIではMYSQL_TYPE
_シンボルを使用して、MySQLデータベースとの間でデータを処理します。これらの型シンボルは、サーバーでMySQLデータ型にマップされます。
たとえば、MYSQL_TYPE_VAR_STRING
はサーバーでVARCHAR
にマップされます。
MySQLデータ型へのOracleデータ型のマッピング
この表に、mysql_fetch_field_*
コールから返されたMYSQL_FIELD
パラメータの型フィールドの値を示します。Oracleデータベースの型はMySQL C APIデータ型にマップされます。
たとえば、VARCHAR2
列はMYSQL_TYPE_VAR_STRING
によって表されます。
MySQLアプリケーションをOracleに移行する場合、この表を使用することをお薦めします。Oracle用MySQLクライアント・ライブラリ・ドライバで、MySQLとOracleとの間のデータ型の変換が行われます。
表7-1 MySQLデータ型へのOracleデータ型のマッピング
Oracleデータ型 | MySQLデータ型へのマップ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ユーザー定義型(オブジェクト型、 |
サポート対象外 |
|
サポートされていません |
|
|
|
|
|
|
|
|
|
|
|
|
MySQLプログラム変数データ型のデータ型変換
mysql_stmt_bind_param()およびmysql_stmt_bind_result()の呼出しは、Cプログラム変数とデータベース列値との変換に使用されます。同様に、OCIでは、サーバーのデータ型からクライアントの様々なデータ型に変換するための豊富なサポートが提供されます。
Cプログラム値からデータベース列値への入力変換は、mysql_stmt_bind_param()を起動して処理されます。Cプログラム値への出力は、mysql_stmt_bind_result()へのコールにより処理されます。
表7-2は、MySQLプログラム変数データ型とOracle列データ型間の稼働可能な変換をまとめたものです。表内で使用されている値は次のとおりです。
-
I
: 入力変換がサポートされます -
O
: 出力変換がサポートされます -
I/O
: 入力と出力の両方の変換がサポートされます -
-
: 変換はサポートされていません。
変換の選択肢を確定する前に、各データ型に対応する注意を必ずお読みください。
表7-2 MySQLプログラム変数データ型からOracle列データ型間への変換
MySQLプログラム変数データ型 | CHAR | VARCHAR2 | NUMBER | LONG | ROWID | UROWID | DATE | RAW | LONG RAW |
---|---|---|---|---|---|---|---|---|---|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
|
|
- |
- |
- |
- |
- |
|
|
|
- |
|
- |
- |
|
- |
- |
|
|
|
- |
|
- |
- |
|
- |
- |
|
|
|
- |
|
- |
- |
|
- |
- |
|
|
|
- |
|
- |
- |
|
- |
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
- |
- |
- |
|
|
|
|
|
- |
|
- |
- |
- |
|
|
|
|
|
- |
|
- |
- |
- |
|
|
|
|
|
- |
|
- |
- |
- |
|
|
|
|
|
|
- |
- |
- |
- |
- |
- |
MYSQL_TYPE_BLOB
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。入力時には、列値は16進数の形式で格納されます。 -
LONG
: 変換は入力または出力に対して有効です。入力時には、列値は16進数の形式で格納されます。 -
RAW
: 変換は入力または出力に対して有効です。 -
LONG RAW
: 変換は入力または出力に対して有効です。 -
NUMBER
、ROWID
、UROWID
およびDATE
では、変換はサポートされていません。
MYSQL_TYPE_DATE
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleDATE
文字形式であることが必要です。出力時、列値はOracleDATE
形式で戻されます。 -
DATE
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
NUMBER
、ROWID
、UROWID
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_DATETIME
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleDATE
文字形式であることが必要です。出力時、列値はOracleDATE
形式で戻されます。 -
DATE
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
NUMBER
、ROWID
、UROWID
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_DOUBLE
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_FLOAT
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_LONG
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_LONG_BLOB
-
CHAR
、VARCHAR2
、LONG
、RAW
およびLONG RAW
: 変換は出力に対して有効です。 -
NUMBER
、ROWID
、UROWID
およびDATE
では、変換はサポートされていません。
MYSQL_TYPE_LONGLONG
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_MEDIUM_BLOB
-
CHAR
、VARCHAR2
、LONG
、RAW
およびLONG RAW
: 変換は出力に対して有効です。 -
NUMBER
、ROWID
、UROWID
およびDATE
では、変換はサポートされていません。
MYSQL_TYPE_NEWDECIMAL
-
CHAR
およびVARCHAR2
: 変換は出力に対して有効です。列値は有効な数値を表している必要があります。 -
NUMBER
: 変換はCプログラム値への出力に対して有効です。 -
LONG
、ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_SHORT
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_STRING
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。 -
NUMBER
: 変換は入力または出力に対して有効です。入力時、ホスト文字列は有効な数値を表している必要があります。 -
LONG
: 変換は入力または出力に対して有効です。 -
ROWID
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleROWID
形式であることが必要です。出力時、列値はOracleROWID
形式で戻されます。 -
UROWID
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleUROWID
形式であることが必要です。出力時、列値はOracleUROWID
形式で戻されます。 -
DATE
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleDATE
文字形式であることが必要です。出力時、列値はOracleDATE
形式で戻されます。 -
RAW
: 変換は入力または出力に対して有効です。入力時には、ホスト文字列を16進数の形式にする必要があります。 -
LONG RAW
: 変換は入力または出力に対して有効です。入力時には、ホスト文字列を16進数の形式にする必要があります。
MYSQL_TYPE_TIME
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleDATE
文字形式であることが必要です。出力時、列値はOracleDATE
形式で戻されます。 -
DATE
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
NUMBER
、ROWID
、UROWID
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_TIMESTAMP
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracleDATE
文字形式であることが必要です。出力時、列値はOracleDATE
形式で戻されます。 -
DATE
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
NUMBER
、ROWID
、UROWID
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_TINY
-
CHAR
およびVARCHAR2
: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。 -
NUMBER
: 変換は入力または出力に対して有効です。 -
LONG
: 変換はデータベース列値への入力に対して有効です。 -
ROWID
、UROWID
、DATE
、RAW
およびLONG RAW
では、変換はサポートされていません。
MYSQL_TYPE_TINY_BLOB
-
CHAR
、VARCHAR2
、LONG
、RAW
およびLONG RAW
: 変換は出力に対して有効です。 -
NUMBER
、ROWID
、UROWID
およびDATE
では、変換はサポートされていません。
MYSQL_TYPE_VAR_STRING
-
CHAR
およびVARCHAR2
: 変換はCプログラム値への出力に対して有効です。 -
NUMBER
: 変換はCプログラム値への出力に対して有効です。 -
LONG
: 変換はCプログラム値への出力に対して有効です。 -
ROWID
: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracleROWID
形式で戻されます。 -
UROWID
: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracleUROWID
形式で戻されます。 -
DATE
: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracleDATE
形式で戻されます。 -
RAW
: 変換はCプログラム値への出力に対して有効です。 -
LONG RAW
: 変換はCプログラム値への出力に対して有効です。
MySQL外部データ型(LOBデータ型記述子)のデータ型変換
表7-3の外部データ型は、指定されたOracle内部データ型に変換されます。
表7-3 LOBデータ型記述子のデータ型変換
MySQL外部データ型 | ORACLE INTERNAL CLOB/NCLOB | ORACLE INTERNAL BLOB |
---|---|---|
|
|
|
|
|
|
|
|
|
|
I/O |
|
|
O |
|
|
O |
|
|
O |
|
日時データ型および期間データ型のデータ型変換
DATETIME
またはINTERVAL
列の操作時に、いずれかの文字データ型を使用して、FETCH
またはINSERT
操作で使用するホスト変数を定義できます。ドライバにより、文字データ型とDATETIME
またはINTERVAL
データ型間の変換が自動的に行われます。
表7-4に、指定されたOracle内部データ型に変換される外部データ型を示します。
表7-4 日時データ型および内部データ型のデータ変換
外部/内部型 | VARCHAR、CHAR | DATE | TS | TSTZ | TSLTZ | INTERVALYEARTOMONTH | INTERVALDAYTOSECOND |
---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
- |
|
|
|
|
|
|
- |
- |
|
|
|
|
|
|
- |
- |
|
|
|
|
|
|
- |
- |
エラー処理
OCIまたはOracleサーバーで生成されるすべてのエラーは、エラー後にmysql_errno()またはmysql_error()メソッドが呼び出されると、アプリケーションに渡されます。アプリケーションは、Oracle固有のエラーを受信します。Oracleエラー・メッセージは、MySQLエラー・コードよりもさらに具体的であるため、エラー状態の解決により適しています。
ドライバ自体で生成されるエラーは、OCIエラー空間でMySQLドライバに予約されるエラー範囲内にあります。
mysql_sqlstate()コールは、必要な場合は必ず、該当するSQLSTATE
にエラーをマップしようとします。ほとんどの場合、一般的なエラー状態に相当するHY000
を戻します。
SQLSTATE
の可能な値は次のとおりです。
-
00000
成功 -
HY000
その他すべてのエラー
ただし、これは、より詳細なSQLSTATE
エラーを期待するクライアント・アプリケーションを部分的に書き換える必要があることも意味します。
OracleでサポートされているMySQL API
Oracle MySQLドライバはMySQL C APIのドキュメントに示されたAPIを実装しています。以下の点に注意する必要があります。
-
一部のMySQLファンクションで動作が変更されています。一般的に、相当する動作がOracleにないため、変更された動作について説明します。
-
一部のMySQLファンクションはサポートされていません。それに応じて説明でそれらを示しています。ドライバは、これらの関数についてエラーを返し、サポートされていない機能を回避するようにアプリケーションに求めます。
ここでは、サポートされるMySQL APIを機能でグループ化し、さらに詳しい情報へのリンクを用意してあります。ただし、関数の動作やパラメータについてすべて説明しているわけではありませんので、MySQL C APIの本元のドキュメントを参照してください。
クライアント・ライブラリの初期化と終了
次のインタフェースでは、クライアント・ライブラリの初期化と終了がサポートされます: mysql_library_end()、mysql_library_init()、mysql_server_end()およびmysql_server_init()。
接続管理
次のインタフェースでは、接続管理がサポートされます: my_init()、mysql_change_user()、mysql_close()、mysql_connect()、mysql_get_character_set_info()、mysql_get_ssl_cipher()、mysql_init()、mysql_options()、mysql_ping()、mysql_real_connect()、mysql_select_db()、mysql_set_character_set()およびmysql_ssl_set()。
エラー・レポート
次のインタフェースでは、エラー・レポートがサポートされます: mysql_errno()、mysql_error()およびmysql_sqlstate()
文の構成と実行
次のインタフェースでは、文の構成と実行がサポートされます: mysql_affected_rows()、mysql_escape_string()、mysql_hex_string()、mysql_kill()、mysql_query()、mysql_real_escape_string()、mysql_real_query()およびmysql_reload()。
結果セットの処理
次のインタフェースでは、結果セットの処理がサポートされます: mysql_data_seek()、mysql_eof()、mysql_fetch_field()、mysql_fetch_field_direct()、mysql_fetch_fields()、mysql_fetch_lengths()、mysql_fetch_row()、mysql_field_count()、mysql_field_seek()、mysql_field_tell()、mysql_free_result()、mysql_insert_id()、mysql_list_dbs()、mysql_list_fields()、mysql_list_processes()、mysql_list_tables()、mysql_more_results()、mysql_next_result()、mysql_num_fields()、mysql_num_rows()、mysql_row_seek()、mysql_row_tell()、mysql_store_result()およびmysql_use_result()。
準備された文
次のインタフェースでは、文のプリコンパイルがサポートされます: mysql_stmt_affected_rows()、mysql_stmt_attr_get()、mysql_stmt_attr_set()、mysql_stmt_bind_param()、mysql_stmt_bind_result()、mysql_stmt_close()、mysql_stmt_data_seek()、mysql_stmt_errno()、mysql_stmt_error()、mysql_stmt_execute()、mysql_stmt_fetch()、mysql_stmt_fetch_column()、mysql_stmt_field_count()、mysql_stmt_free_result()、mysql_stmt_init()、mysql_stmt_insert_id()、mysql_stmt_next_result()、mysql_stmt_num_rows()、mysql_stmt_param_count()、mysql_stmt_param_metadata()、mysql_stmt_prepare()、mysql_stmt_reset()、mysql_stmt_result_metadata()、mysql_stmt_row_seek()、mysql_stmt_row_tell()、mysql_stmt_send_long_data()、mysql_stmt_sqlstate()およびmysql_stmt_store_result()。
トランザクション制御
次のインタフェースでは、トランザクション制御がサポートされます: mysql_autocommit()、mysql_commit()およびmysql_rollback()。
情報ルーチン
次のインタフェースでは、情報ルーチンがサポートされます: mysql_character_set_name()、mysql_get_client_info()、mysql_get_client_version()、mysql_get_host_info()、mysql_get_proto_info()、mysql_get_server_info()、mysql_get_server_version()、mysql_info()、mysql_stat()、mysql_thread_id()およびmysql_warning_count()。
管理ルーチン
次のインタフェースでは、管理ルーチンがサポートされます: mysql_refresh()、mysql_set_server_option()、mysql_set_local_infile_default()、mysql_set_local_infile_handler()およびmysql_shutdown()。
その他のルーチン
次のインタフェースでは、残りのすべてのルーチンがサポートされます: mysql_create_db()、mysql_debug()、mysql_debug_info()、mysql_drop_db()、mysql_dump_debug_info()、mysql_read_query_result()、mysql_send_query()、mysql_thread_end()、mysql_thread_init()およびmysql_thread_safe()。
my_init()
この関数は無演算関数です。my_sys.h
ファイルのmy_init
マクロによって呼び出されます。すべての初期化はmysql_library_init()
によって行われます。
戻り値
0
mysql_affected_rows()
実行されたINSERT
、UPDATE
およびDELETE
文で処理された行の数を返します。
UPDATE
文の場合、MySQLのセマンティクスでは、新しい値と以前の値が同じ行は報告されないことに注意してください。これに対して、Oracleは、新しい値と以前の値が同じ場合でも、その行は影響を受けたと報告します。この関数は、Oracleのセマンティクスを実装します。そのため、このコールに依存する既存のアプリケーションで、プログラムの変更が必要になる可能性があります。
SELECT
文の場合、戻り値は(my_ulonglong
) -1です。
戻り値
DML文によって処理された行数で、>0
です。0
は文による更新が行われなかったことを示します。-1
は文が問合せ(SELECT
)またはエラーだったことを示します。
mysql_change_user()
ユーザー名、パスワードおよび同じまたは別のホスト上のデータベースを含む、ユーザーを変更します。Oracle Database 12cでは、データベースの変更はサポートされていないので、db
パラメータに入力された値は無視されます。
mysql_change_user()
へのコールにより、アクティブ・トランザクションはロール・バックされ、現在のセッションは終了し、host
パラメータに格納された情報に基づいて新しい接続が再確立されます。
Oracle Database 12cでこの動作を実装するには、既存のアプリケーションのアプリケーション・ロジックを必要に応じて変更する必要があります。
戻り値
元のホストで指定されたユーザー名とパスワードに対応する接続が再確立できた場合、0
。エラーが発生した場合、0以外。
mysql_character_set_name()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
空の文字列。
mysql_commit()
サービス・コンテキストに現在関連付けられているトランザクションをコミットします。
mysql_commit()
コールはOracle Database 12cでのデフォルト・モードをサポートしています。そのため、completion type
システム変数は無視されます。
このAPIを使用してMySQL固有のcompletion type
操作を実行する既存のアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。それ以外は、0以外。
mysql_create_db()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMYSQL構造が渡された場合、0以外。
mysql_data_seek()
オフセット・パラメータで指定された値に基づいて結果セットの行にシークします。
オフセット値は行番号ですが、0
からmysql_num_rows(result)
-1までです。
戻り値
なし
mysql_debug_info()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMYSQL
構造の場合、0以外。
mysql_drop_db()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMYSQL
構造の場合、0以外。
mysql_dump_debug_info()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMYSQL
構造が渡された場合、0以外。
mysql_eof()
DEPRECATED。かわりに、mysql_errno()またはmysql_error()を使用してください。
結果セットの最終行が読み取られたかどうかを判別します。
戻り値
最終行がフェッチされた場合は1
、それ以外の場合は0
。
mysql_errno()
接続またはグローバル・コンテキストでの直前のエラーのOracleエラー番号を返します。
前のコールで接続が確立されていない場合、NULL
を渡し、グローバル・コンテキストでの直前のエラー番号を戻します。
戻り値
MYSQL
接続での直前のエラー番号、またはグローバル・コンテキストでの直前のエラー番号。
mysql_error()
接続またはグローバル・コンテキストでの直前のエラーのOracleエラー・メッセージを返します。
前のコールで接続が確立されていない場合、NULL
を渡し、グローバル・コンテキストでの直前のエラー・メッセージを戻します。
戻り値
MYSQL
接続での直前のエラー・メッセージ、またはグローバル・コンテキストでの直前のエラー・メッセージ。
mysql_escape_string()
ソース(from
パラメータ)の文字列をエンコードし、宛先(to
パラメータ)に格納して、終端のNULL
を付加します。
接続での現在のキャラクタ・セットを使用して、1文字('\
')のみのエンコードをサポートします。
mysql_real_escape_string()を参照してください。
戻り値
to
に格納された、終端のNULL
を除く値の長さ。
mysql_fetch_field()
結果セットの1つの列の定義をMYSQL_FIELD
構造として返します。
MYSQL_FIELD
構造の、flag
、name
、name_length
、org_name
、org_name_length
、type
およびmax_length
属性のみをサポートします。
-
flag
属性は、NOT_NULL_FLAG
、NUM_FLAG
、およびBINARY_FLAG
の値のみをサポートします。 -
org_name
属性には、name
属性と同じ値が設定されます。 -
org_name_length
属性には、name_length
属性と同じ値が設定されます。
戻り値
現在の列のMYSQL_FIELD
構造。列が残っていない場合、NULL
。
mysql_fetch_field_direct()
指定されたフィールド番号に対する列のフィールド定義を、MYSQL_FIELD
構造として取得します。
戻り値
特定のフィールドのフィールド定義。エラーが発生した場合またはフィールド番号fieldnr
が範囲外の場合、NULL
。
mysql_fetch_fields()
結果セットに対するすべてのMYSQL_FIELD
構造の配列を返します。各MYSQL_FIELD
構造は、結果セットの1つの列のフィールド定義です。
戻り値
エラーが発生した場合、NULL
。
mysql_get_character_set_info()
Oracle Database 12cではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
なし
mysql_get_client_info()
mysql_version.h
ヘッダー・ファイルにMYSQL_SERVER_VERSION
マクロによって定義されているMySQLバージョン番号を文字列形式で返します。マクロ定義はoramysql
ライブラリをビルドするmysql_version.h
ファイルに使用されます。アプリケーションによって使用されるmysql_version.h
ファイルではありません。
戻り値
MySQLクライアント・ライブラリ・バージョンを表す文字列。
mysql_get_client_version()
mysql_version.h
ヘッダー・ファイルにMYSQL_VEERSION_ID
マクロによって定義されている現在のMySQLバージョンを返します。マクロ定義はoramysql
ライブラリをビルドするmysql_version.h
ファイルに使用されます。アプリケーションによって使用されるmysql_version.h
ファイルではありません。
戻り値
MYSQL_VERSION_ID
マクロに格納されているMySQLのバージョンを表す符号なし長整数。マクロ定義はoramysql
ライブラリをビルドするmysql_version.h
ファイルに使用されます。アプリケーションによって使用されるmysql_version.h
ファイルではありません。
mysql_get_proto_info()
これはOracle環境ではno-opです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
0
mysql_get_server_info()
Oracleサーバーのバージョンをテキスト文字列形式で戻します(「12.1.0.1.0」など)。
このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
Oracleサーバー番号を表す文字列。エラーが発生した場合、NULL
。
mysql_get_server_version()
Oracle Databaseのバージョン番号(120100
など)を戻します。これは、整数XXYYZZ
形式で、XX
はメジャー・バージョン、YY
はマイナー・バージョン、ZZ
は、リリース・レベル内のバージョンを表します。
戻り値
Oracle Databaseバージョン番号。エラーが発生した場合、0
。
mysql_hex_string()
from
パラメータで指定したた文字列を16進形式にエンコードします。各文字が2桁の16進数としてエンコードされます。結果はto
パラメータに格納され、終端にNULL
バイトを含みます。
to
バッファは、最低でもlength*2+1
バイトのサイズが必要です。
戻り値
to
パラメータに格納された、終端のNULL
文字を除く値の長さ。
mysql_init()
NULL
が渡された場合、MYSQL
構造を割り当てます。それ以外の場合、このコールは、渡されたMYSQL
構造を初期化します。
戻り値
初期化されたMYSQL構造。MYSQL
構造を割り当てられない場合、または初期化できない場合、NULL
。
mysql_kill()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
0
。無効なMYSQL構造が渡された場合、0以外。
mysql_list_dbs()
wildパラメータに合致するサーバー上のデータベース名のリストを返します。
このAPIを使用するには、DBAがoramysql_dbs_view
ビューを作成し、PUBLIC
に権限を付与します。
Oracle Database 12cの場合
Oracle Database 12cの場合、ビューoramysql_dbs_view
はV$DATABASE
およびV$PDBS
システム・オブジェクトに基づきます。
Oracle Database 12c以降のバージョンに接続するときは、次のSQLスクリプトを使用して、Oracle Database 12cにoramysql_dbs_view
ビューを作成します。
create view oramysql_dbs_view(name) as select left.name from v$pdbs left union select right.name from v$database right; create public synonym oramysql_dbs_view for oramysql_dbs_view; grant select on oramysql_dbs_view to public;
アプリケーションがmysql_list_dbs()
関数を呼び出したときにoramysql_dbs_view
ビューが存在しない場合、V$ PDBS
およびV$ DATABASE
表から情報が取得されます。ただし、これらの表にアクセスする権限がない場合、エラーが生成されます。
Oracle Database 12cより前のOracle Databaseの場合
次のSQLスクリプトを使用して、Oracle Databaseにoramysql_dbs_view
ビューを作成します。
create view oramysql_dbs_view(name) as select name form v$database; create public synonym oramysql_dbs_view for oramysql_dbs_view; grant select on oramysql_dbs_view to public;
ビューが存在しない場合、wildパラメータは無視され、コールによって次のSQL文が実行されます。
select SYS_CONTEXT( 'USERENV', 'DB_NAME') from DUAL;
戻り値
エラーが発生した場合、NULL
。成功した場合、MYSQL_RES
結果セット。
mysql_options()
これは無演算関数です。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMYSQL
構造が渡された場合、0以外。
mysql_real_connect()
db
パラメータはOracle Database 12cでは使用されません。このパラメータを使用してdb
に接続する既存のアプリケーションは、host
パラメータに接続識別子またはサービス名を指定する必要があります。接続文字列は次の形式で指定します。
[//]host[:port][/service_name][:server][/instance_name]
たとえば、SIDがorcl3
のホストca-tools3.hostname.com
に接続する場合、ホスト・パラメータはca-tools3.hostname.com/orcl3
です。
パラメータdb
、port
、unix_socket
およびclient_flag
は使用されていません。ポートを指定する必要がある場合、host
パラメータに使用される構文である必要があります。
戻り値
成功した場合、MYSQL
構造が初期化されます。初期化に成功しなかった場合、NULL
。
mysql_real_escape_string()
ソース(from
パラメータ)の文字列をエンコードし、結果を宛先(to
パラメータ)に格納して終端のnullバイトを付加します。
一重引用符で囲まれた文字のみがエスケープされることに注意してください。各一重引用符はOracleのセマンティクスを使用してエスケープされます。to
バッファは、最低でもlength*2+1バイト
のサイズが必要です。元の文字列の各一重引用符は、2つの連続した一重引用符に置換されます。
mysql_escape_string()を参照してください。
戻り値
to
バッファに格納された、終端のNULL
を除く値の長さ。それ以外の場合は0
。
mysql_refresh()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMySQL構造が渡された場合、0以外。
mysql_reload()
権限表を再ロードします。この関数は非推奨で、実装されていません。かわりにmysql_query()を使用します。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
mysql_rollback()
現在のトランザクション(最後のmysql_commit()またはmysql_real_connect()コール以降に実行された一連の文として定義される)がロールバックされます。アプリケーションがオブジェクト・モードで実行されている場合は、このトランザクションで修正または更新されたオブジェクト・キャッシュ内のオブジェクトも同様にロールバックされます。
mysql_rollback()
コールはOracle Database 12cでのデフォルト・モードをサポートしています。そのため、completion type
システム変数は無視されます。
このAPIを使用してMySQL固有のcompletion type
操作を実行する既存のアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
現在アクティブではないグローバル・トランザクションをロールバックしようとするとエラーになります。
mysql_send_query()
問合せを送信します。oramysql
ライブラリでは、この関数は非同期ではありません。問合せが実行されるまで呼出しはブロッキングされます。
戻り値
成功した場合、0
。エラーが発生した場合、0以外。
mysql_server_init()
接続を作成する前にoramysql
クライアント・ライブラリを初期化します。mysql.h
ヘッダー・ファイルで、関数mysql_library_init()
マクロはmysql_server_init()
であると定義されています。この呼出しはスレッドセーフではありません。呼び出すことができるのは、1つのスレッドのみです。
戻り値
成功した場合、0
。エラーが発生した場合、0以外。
mysql_set_local_infile_default()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
0
mysql_set_local_infile_handler()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
0
mysql_shutdown()
Oracle Databaseインスタンスの停止に役立ちます。mysql_shutdown
APIを使用する前に、CプログラムはSYSDBA
またはSYSOPER
セッションでサーバーに接続する必要があります。
パラメータmysql_shutdown_level
およびmysql_enum_shutdown_level
は無視されます。内部では、OCIDBShutdown()
コールがOCI_DEFAULT
モードで実行されます。
戻り値
成功した場合、0
。エラーが発生した場合、0以外。
mysql_sqlstate()
null終端でないSQLSTATE
文字列を返します。MySQLには、使用されていないSQLSTATE
コードが多くあります。
戻り値
SQLSTATE
コード: 00000
- 成功、HY000
- その他のすべてのエラー。
mysql_ssl_set()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、0
。無効なMySQL構造が渡された場合、0以外。
mysql_stat()
これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
成功した場合、空白(" ")4つの文字列。無効なMYSQL
構造が渡された場合、NULL
。
mysql_stmt_affected_rows()
この関数は、準備された文の実行によって影響を受ける行の数を返します。
戻り値
成功した場合、DML操作により影響を受ける行の数。エラーが発生した場合、またはSELECT
文が実行された場合、(my_ulonglong)-1
。
mysql_stmt_fetch()
この関数は、mysql_stmt_bind_result
の呼出しによってバインドされたプログラム変数内の1つの行をフェッチします。
戻り値
1つの行が正常にフェッチされた場合、0。それ以上行/データがない場合、MYSQL_NO_DATA
。データの切捨てが発生した場合、MYSQL_DATA_TRUNCATED
。エラーが発生した場合、1
。
mysql_stmt_field_count()
MYSQL_STMT
オブジェクト内のフィールドの数をフェッチします。
戻り値
エラーが発生した場合、0。それ以外の場合、MYSQL_STMT
オブジェクトに関連付けられた結果セットのフィールド数。
mysql_stmt_init()
MYSQL
接続オブジェクトから新しいMYSQL_STMT
オブジェクトを作成します。
戻り値
成功した場合、MYSQL_STMT
オブジェクト。エラーが発生した場合、NULL
。
mysql_stmt_num_rows()
格納されている結果セット内の行の数を返します。格納されていない(バッファリングされていない結果セット)場合、それまでにフェッチされた行の総数を返します。
戻り値
行の数のフェッチ中にエラーが発生した場合、0。
mysql_stmt_result_metadata()
MYSQL_STMT
オブジェクトを介して実行されるSELECT
文の結果のメタデータを返します。
戻り値
準備されたSELECT
文のメタデータを表す結果セット。エラーが発生した場合、 NULL
。
mysql_stmt_send_long_data()
パラメータ・データを分割してサーバーに送信します。
関数mysql_stmt_bind_param()
が最初にコールされ、次にmysql_stmt_send_long_data()
、mysql_stmt_execute()
と続く必要があります。
この関数は、列の文字データ値またはバイナリ・データ値を分割して送信するために複数回呼び出すことができます。
戻り値
データがサーバーに正常に送信された場合、0
。エラーが発生した場合、0以外。
mysql_stmt_sqlstate()
最新の準備された文に対するSQLSTATE
文字列を返します。MySQLには、使用されていないSQLSTATE
コードが多くあります。
戻り値
SQLSTATE
コード: 「00000
」 - 成功、「HY0000
」 - その他のすべてのエラー。
mysql_stmt_store_result()
直前の問合せからの結果セットを格納します。
直前の問合せがSELECT
だった場合、結果セットが返されます。直前の文がSELECT
以外またはエラーだった場合、NULL
結果セットが返されます。
戻り値
成功した場合、有効な結果セット。エラーが発生した場合、またはSELECT
以外の文の場合、NULL
。
mysql_store_result()
直前の問合せからの結果セットを格納します。
直前の問合せがSELECT
だった場合、結果セットを返します。
直前の文がSELECT
以外またはエラーだった場合、NULL
結果セットが返されます。
戻り値
成功した場合、有効な結果セット。それ以外の、エラーまたはSELECT
以外の文の場合、NULL
。
mysql_thread_id()
接続のOracleセッションID(SID)を返します。これは、内部で次のSQL文を実行して取得したものです。
select SYS_CONTEXT('USERENV', 'SID') from DUAL;
このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。
戻り値
OracleセッションID(SID)。エラーが発生した場合、0
。