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。