ヘッダーをスキップ
Oracle® Database移行ガイド
12cリリース1 (12.1)
B71352-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 Oracle MySQLクライアント・ライブラリ・ドライバのAPIリファレンス

この章では、MySQLからの移行をサポートするAPIについて説明します。これは、Oracle Databaseリリース12cより利用できます。

この章の内容は次のとおりです。

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データ型へのマップ

CHAR

MYSQL_TYPE_VAR_STRING

NCHAR

MYSQL_TYPE_VAR_STRING

NVARCHAR2

MYSQL_TYPE_VAR_STRING

VARCHAR2

MYSQL_TYPE_VAR_STRING

NUMBER

MYSQL_TYPE_NEWDECIMAL

LONG

MYSQL_TYPE_BLOB

CLOB

MYSQL_TYPE_BLOB

NCLOB

MYSQL_TYPE_BLOB

DATE

MYSQL_TYPE_DATETIME

RAW

MYSQL_TYPE_VAR_STRING

BLOB

MYSQL_TYPE_BLOB

LONG RAW

MYSQL_TYPE_BLOB

ROWID

MYSQL_TYPE_VAR_STRING

UROWID

MYSQL_TYPE_VAR_STRING

BINARY FLOAT

MYSQL_TYPE_FLOAT

BINARY DOUBLE

MYSQL_TYPE_DOUBLE

ユーザー定義型(オブジェクト型、VARRAY、ネストした表)

サポートされていません

REF

サポートされていません

BFILE

MYSQL_TYPE_BLOB

TIMESTAMP

MYSQL_TYPE_DATETIME

TIMESTAMPWITHTIMEZONE

MYSQL_TYPE_DATETIME

TIMESTAMPWITHLOCALTIMEZONE

MYSQL_TYPE_DATETIME

INTERVALYEARTOMONTH

MYSQL_TYPE_VAR_STRING

INTERVALDAYTOSECOND

MYSQL_TYPE_VAR_STRING


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_TINY


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_SHORT


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_LONG


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_LONGLONG


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_FLOAT


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_DOUBLE


I/O

I/O

I/O

I

-

-

-

-

-

MYSQL_TYPE_DATE


I/O

I/O

-

I

-

-

I/O

-

-

MYSQL_TYPE_TIME


I/O

I/O

-

I

-

-

I/O

-

-

MYSQL_TYPE_DATETIME


I/O

I/O

-

I

-

-

I/O

-

-

MYSQL_TYPE_TIMESTAMP


I/O

I/O

-

I

-

-

I/O

-

-

MYSQL_TYPE_STRING


I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

MYSQL_TYPE_VAR_STRING


O

O

O

O

O

O

O

O

O

MYSQL_TYPE_BLOB


I/O

I/O

-

I/O

-

-

-

I/O

I/O

MYSQL_TYPE_TINY_BLOB


O

O

-

O

-

-

-

O

O

MYSQL_TYPE_MEDIUM_BLOB


O

O

-

O

-

-

-

O

O

MYSQL_TYPE_LONG_BLOB


O

O

-

O

-

-

-

O

O

MYSQL_TYPE_NEWDECIMAL


O

O

O

-

-

-

-

-

-


MYSQL_TYPE_BLOB

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。入力時には、列値は16進数の形式で格納されます。

  • LONG: 変換は入力または出力に対して有効です。入力時には、列値は16進数の形式で格納されます。

  • RAW: 変換は入力または出力に対して有効です。

  • LONG RAW: 変換は入力または出力に対して有効です。

  • NUMBERROWIDUROWIDおよびDATEでは、変換はサポートされていません。

MYSQL_TYPE_DATE

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle DATE文字形式であることが必要です。出力時、列値はOracle DATE形式で戻されます。

  • DATE: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • NUMBERROWIDUROWIDRAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_DATETIME

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle DATE文字形式であることが必要です。出力時、列値はOracle DATE形式で戻されます。

  • DATE: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • NUMBERROWIDUROWIDRAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_DOUBLE

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_FLOAT

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_LONG

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_LONG_BLOB

  • CHARVARCHAR2LONGRAWおよびLONG RAW: 変換は出力に対して有効です。

  • NUMBERROWIDUROWIDおよびDATEでは、変換はサポートされていません。

MYSQL_TYPE_LONGLONG

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_MEDIUM_BLOB

  • CHARVARCHAR2LONGRAWおよびLONG RAW: 変換は出力に対して有効です。

  • NUMBERROWIDUROWIDおよびDATEでは、変換はサポートされていません。

MYSQL_TYPE_NEWDECIMAL

  • CHARおよびVARCHAR2: 変換は出力に対して有効です。列値は有効な数値を表している必要があります。

  • NUMBER: 変換はCプログラム値への出力に対して有効です。

  • LONGROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_SHORT

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_STRING

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。

  • NUMBER: 変換は入力または出力に対して有効です。入力時、ホスト文字列は有効な数値を表している必要があります。

  • LONG: 変換は入力または出力に対して有効です。

  • ROWID: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle ROWID形式であることが必要です。出力時、列値はOracle ROWID形式で戻されます。

  • UROWID: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle UROWID形式であることが必要です。出力時、列値はOracle UROWID形式で戻されます。

  • DATE: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle DATE文字形式であることが必要です。出力時、列値はOracle DATE形式で戻されます。

  • RAW: 変換は入力または出力に対して有効です。入力時には、ホスト文字列を16進数の形式にする必要があります。

  • LONG RAW: 変換は入力または出力に対して有効です。入力時には、ホスト文字列を16進数の形式にする必要があります。

MYSQL_TYPE_TIME

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle DATE文字形式であることが必要です。出力時、列値はOracle DATE形式で戻されます。

  • DATE: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • NUMBERROWIDUROWIDRAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_TIMESTAMP

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。入力時、ホスト文字列はOracle DATE文字形式であることが必要です。出力時、列値はOracle DATE形式で戻されます。

  • DATE: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • NUMBERROWIDUROWIDRAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_TINY

  • CHARおよびVARCHAR2: 変換は入力または出力に対して有効です。出力時、列値が有効な数値を表している必要があります。

  • NUMBER: 変換は入力または出力に対して有効です。

  • LONG: 変換はデータベース列値への入力に対して有効です。

  • ROWIDUROWIDDATERAWおよびLONG RAWでは、変換はサポートされていません。

MYSQL_TYPE_TINY_BLOB

  • CHARVARCHAR2LONGRAWおよびLONG RAW: 変換は出力に対して有効です。

  • NUMBERROWIDUROWIDおよびDATEでは、変換はサポートされていません。

MYSQL_TYPE_VAR_STRING

  • CHARおよびVARCHAR2: 変換はCプログラム値への出力に対して有効です。

  • NUMBER: 変換はCプログラム値への出力に対して有効です。

  • LONG: 変換はCプログラム値への出力に対して有効です。

  • ROWID: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracle ROWID形式で戻されます。

  • UROWID: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracle UROWID形式で戻されます。

  • DATE: 変換はCプログラム値への出力に対して有効です。出力時、列値はOracle DATE形式で戻されます。

  • RAW: 変換はCプログラム値への出力に対して有効です。

  • LONG RAW: 変換はCプログラム値への出力に対して有効です。

MySQL外部データ型(LOBデータ型記述子)のデータ型変換

表7-3の外部データ型は、指定されたOracle内部データ型に変換されます。

表7-3 LOBデータ型記述子のデータ型変換

MySQL外部データ型 ORACLE INTERNAL CLOB/NCLOB ORACLE INTERNAL BLOB

MYSQL_TYPE_BIT

I/O

I/O

MYSQL_TYPE_STRING

I/O

I/O

MYSQL_TYPE_VAR_STRING

O

O

MYSQL_TYPE_BLOB

I/O

I/O

MYSQL_TYPE_TINY_BLOB

O

O

MYSQL_TYPE_MEDIUM_BLOB

O

O

MYSQL_TYPE_LONG_BLOB

O

O


日時および時間隔データ型のデータ型変換

DATETIMEまたはINTERVAL列の操作時に、いずれかの文字データ型を使用して、FETCHまたはINSERT操作で使用するホスト変数を定義できます。ドライバにより、文字データ型とDATETIMEまたはINTERVALデータ型間の変換が自動的に行われます。

表7-4に、指定されたOracle内部データ型に変換される外部データ型を示します。

表7-4 日時データ型および内部データ型のデータ変換

外部/内部型 VARCHAR、CHAR DATE TS TSTZ TSLTZ INTERVALYEARTOMONTH INTERVALDAYTOSECOND

MYSQL_TYPE_STRING

I/O

I/O

I/O

I/O

I/O

I/O

I/O

MYSQL_TYPE_VAR_STRING

O

O

O

O

O

O

O

MYSQL_TYPE_DATE

I/O

I/O

I/O

I/O

I/O

-

-

MYSQL_TYPE_TIME

I/O

I/O

I/O

I/O

I/O

-

-

MYSQL_TYPE_DATETIME

I/O

I/O

I/O

I/O

I/O

-

-

MYSQL_TYPE_TIMESTAMP

I/O

I/O

I/O

I/O

I/O

-

-


エラー処理

OCIまたはOracleサーバーで生成されるすべてのエラーは、エラー後にmysql_errno()またはmysql_error()メソッドが呼び出されると、アプリケーションに渡されます。アプリケーションは、Oracle固有のエラーを受信します。Oracleエラー・メッセージは、MySQLエラー・コードよりもさらに具体的であるため、エラー状態の解決により適しています。

ドライバ自体で生成されるエラーは、OCIエラー空間でMySQLドライバに予約されるエラー範囲内にあります。

mysql_sqlstate()コールは、必要な場合は必ず、該当するSQLSTATEにエラーをマップしようとします。ほとんどの場合、一般的なエラー状態に相当するHY000を戻します。

SQLSTATEの可能な値は次のとおりです。

  • 00000 成功

  • HY000 その他すべてのエラー

ただし、これは、より詳細なSQLSTATEエラーを期待するクライアント・アプリケーションを部分的に書き換える必要があることも意味します。

使用可能なMySQL API

この項では、APIを機能別に分け、より詳細な情報へのリンクを示します。ただし、関数の動作やパラメータについて完全に説明するものではありません。

Oracle MySQLドライバはMySQL C APIのドキュメントに示されたAPIを実装しています。次のことに注意してください。

  • 一部のMySQLファンクションで動作が変更されています。一般的に、相当する動作がOracleにないため、変更された動作について説明します。

  • 一部のMySQLファンクションはサポートされていません。それに応じて説明でそれらを示しています。ドライバは、これらの関数についてエラーを返し、サポートされていない機能を回避するようにアプリケーションに求めます。

クライアント・ライブラリの初期化と終了

次のインタフェースでは、クライアント・ライブラリの初期化と終了がサポートされます。

接続管理

次のインタフェースでは、接続管理がサポートされます。

エラー・レポート

次のインタフェースでは、エラー・レポートがサポートされます。

文の構成と実行

次のインタフェースでは、文の構成と実行がサポートされます。

結果セットの処理

次のインタフェースでは、結果セットの処理がサポートされます。

準備された文

次のインタフェースでは、文の準備がサポートされます。

トランザクション制御

次のインタフェースでは、トランザクション制御がサポートされます。

情報ルーチン

次のインタフェースでは、情報ルーチンがサポートされます。

管理ルーチン

次のインタフェースでは、管理ルーチンがサポートされます。

その他のルーチン

次のインタフェースでは、残りのすべてのルーチンがサポートされます。

my_init()

この関数は無演算関数です。my_sys.hファイルのmy_initマクロによって呼び出されます。すべての初期化はmysql_library_init()によって行われます。

戻り値

0

mysql_affected_rows()

実行されたINSERTUPDATEおよびDELETE文で処理された行の数を返します。

UPDATE文の場合、MySQLのセマンティクスでは、新しい値と以前の値が同じ行は報告されないことに注意してください。これに対して、Oracleは、新しい値と以前の値が同じ場合でも、その行は影響を受けたと報告します。この関数は、Oracleのセマンティクスを実装します。そのため、このコールに依存する既存のアプリケーションで、プログラムの変更が必要になる可能性があります。

SELECT文の場合、戻り値は(my_ulonglong) -1です。

戻り値

DML文によって処理された行数で、>0です。0は文による更新が行われなかったことを示します。-1は文が問合せ(SELECT)またはエラーだったことを示します。

mysql_autocommit()

自動コミット・モードをONまたはOFFに設定します。

戻り値

自動コミット・モードが正常に変更された場合、0。プロセスでエラーが発生した場合、0以外。

mysql_change_user()

ユーザー名、パスワードおよび同じまたは別のホスト上のデータベースを含む、ユーザーを変更します。Oracle Database 12cリリース1では、データベースの変更はサポートされていないので、dbパラメータに入力された値は無視されます。

mysql_change_user()へのコールにより、アクティブ・トランザクションはロール・バックされ、現在のセッションは終了し、hostパラメータに格納された情報に基づいて新しい接続が再確立されます。

Oracle Database 12cリリース1でこの動作を実装するには、既存のアプリケーションのアプリケーション・ロジックを必要に応じて変更する必要があります。

戻り値

元のホストで指定されたユーザー名とパスワードに対応する接続が再確立できた場合、0。エラーが発生した場合、0以外。

mysql_character_set_name()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

空の文字列

mysql_close()

接続を閉じ、関連するすべてのデータ構造を解放します。

戻り値

なし

mysql_commit()

サービス・コンテキストに現在関連付けられているトランザクションをコミットします。

mysql_commit()コールはOracle Database 12cリリース1でのデフォルト・モードをサポートしています。そのため、completion typeシステム変数は無視されます。

このAPIを使用してMySQL固有のcompletion type操作を実行する既存のアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。それ以外は、0以外。

mysql_connect()

非推奨。mysql_real_connect()を使用してください。

戻り値

初期化されたMYSQL構造。エラーが発生した場合、NULL

mysql_create_db()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMYSQL構造が渡された場合、0以外。

mysql_data_seek()

オフセット・パラメータで指定された値に基づいて結果セットの行にシークします。

オフセット値は行番号ですが、0からmysql_num_rows(result) -1までです。

戻り値

なし

mysql_debug()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

mysql_debug_info()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMYSQL構造の場合、0以外。

mysql_drop_db()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMYSQL構造の場合、0以外。

mysql_dump_debug_info()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMYSQL構造が渡された場合、0以外。

mysql_eof()

非推奨。かわりに、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構造の、flagnamename_lengthorg_nameorg_name_lengthtypeおよびmax_length属性のみをサポートします。

  • flag属性は、NOT_NULL_FLAGNUM_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_fetch_lengths()

現在の行の列の長さの配列を返します。

戻り値

各列のサイズを表す符号なし長整数の配列。エラーが発生した場合、NULL

mysql_fetch_row()

結果セットの次の行を取得します。

戻り値

次の行のMYSQL_ROW構造。取得する行がそれ以上ない場合、またはエラーが発生した場合、NULL

mysql_field_count()

接続での最新の問合せの結果セット内の列数を返します。

戻り値

MYSQL構造内の結果セットのフィールド数。エラーが発生した場合、0

mysql_field_seek()

フィールド・カーソルを指定されたオフセットに設定します。

戻り値

フィールド・セットへのオフセット

mysql_field_tell()

フィールド(現在のフィールド)の位置を返します。

戻り値

現在のフィールドのオフセット

mysql_free_result()

結果セットに割り当てられているメモリーを解放します。

戻り値

なし

mysql_get_character_set_info()

Oracle Database 12cリリース1ではサポートされません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

なし

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_host_info()

データベースに接続するために使用されたホスト名を戻します。

戻り値

ホスト名の文字列。エラーの場合、NULL

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_get_ssl_cipher()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

NULL

mysql_hex_string()

fromパラメータで指定したた文字列を16進形式にエンコードします。各文字が2桁の16進数としてエンコードされます。結果はtoパラメータに格納され、終端にNULLバイトを含みます。

toバッファは、最低でもlength*2+1バイトのサイズが必要です。

戻り値

toパラメータに格納された、終端のNULL文字を除く値の長さ。

mysql_info()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

NULL

mysql_init()

NULLが渡された場合、MYSQL構造を割り当てます。それ以外の場合、このコールは、渡されたMYSQL構造を初期化します。

戻り値

初期化されたMYSQL構造。MYSQL構造を割り当てられない場合、または初期化できない場合、NULL

mysql_insert_id()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_kill()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0。無効なMYSQL構造が渡された場合、0以外。

mysql_library_end()

oramysqlライブラリを終了します。

戻り値

なし

mysql_library_init()

oramysqlライブラリを初期化します。

戻り値

成功した場合、0。MySQLライブラリの初期化に失敗した場合、0以外。

mysql_list_dbs()

wildパラメータに合致するサーバー上のデータベース名のリストを返します。

このAPIを使用するには、DBAがoramysql_dbs_viewビューを作成し、PUBLICに権限を付与します。

Oracle Database 12cの場合

Oracle Database 12cリリース1の場合、ビューoramysql_dbs_viewV$DATABASEおよびV$PDBSシステム・オブジェクトに基づきます。

Oracle Database 12c以降のバージョンに接続するときは、次のSQLスクリプトを使用して、Oracle Database 12coramysql_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_list_fields()

指定した表に対し、wildパラメータに合致する列名を返します。

戻り値

エラーが発生した場合、NULL。成功した場合、MySql結果セット。

mysql_list_processes()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

NULL

mysql_list_tables()

これは無演算関数です。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

NULL

mysql_more_results()

現在実行している文から、さらに結果を取得できるかどうかを確認します。

戻り値

さらに結果がある場合、TRUE。結果セットがそれ以上ない場合、FALSE

mysql_next_result()

次の結果セットを取得します。

戻り値

成功し、さらに結果がある場合、0。成功し、それ以上結果がない場合、-1。エラーが発生した場合、>0

mysql_num_fields()

結果セット内の列の数を返します。

戻り値

結果セット内の列の数を表す符号なしの整数。失敗した場合、0を返します。

mysql_num_rows()

結果セット内の行の数を返します。

戻り値

結果セット内の行の数。それ以外の場合、0

mysql_options()

これは無演算関数です。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMYSQL構造が渡された場合、0以外。

mysql_ping()

サーバーにアクセスできない場合、エラーと接続失敗の詳細を返します。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_query()

null終端の文字列で示されたSQL文を実行します。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_read_query_result()

これは無演算関数です。コールが完了するとmysql_send_query()からの問合せ結果が使用可能になります。

戻り値

0

mysql_real_connect()

dbパラメータはOracle Database 12cリリース1では使用されません。このパラメータを使用してdbに接続する既存のアプリケーションは、hostパラメータに接続識別子またはサービス名を指定する必要があります。接続文字列は次の形式で指定します。

[//]host[:port][/service_name][:server][/instance_name]

たとえば、SIDがorcl3のホストca-tools3.us.oracle.comに接続する場合、ホスト・パラメータはca-tools3.us.oracle.com/orcl3です。

パラメータdbportunix_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_real_query()

この関数は、問合せ文字列を実行します。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_refresh()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。無効なMySQL構造が渡された場合、0以外。

mysql_reload()

権限表を再ロードします。この関数は非推奨で、実装されていません。かわりにmysql_query()を使用します。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

mysql_rollback()

現在のトランザクション(最後のmysql_commit()またはmysql_real_connect()コール以降に実行された一連の文として定義される)がロールバックされます。アプリケーションがオブジェクト・モードで実行されている場合は、このトランザクションで修正または更新されたオブジェクト・キャッシュ内のオブジェクトも同様にロールバックされます。

mysql_rollback()コールはOracle Database 12cリリース1でのデフォルト・モードをサポートしています。そのため、completion typeシステム変数は無視されます。

このAPIを使用してMySQL固有のcompletion type操作を実行する既存のアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

現在アクティブではないグローバル・トランザクションをロールバックしようとするとエラーになります。

mysql_row_seek()

特定の行に設定し、前の行とのオフセットを返します。

戻り値

MYSQL_ROW_OFFSET構造での前の行とのオフセット。

mysql_row_tell()

結果セット内の現在の行の位置を返します。

戻り値

MYSQL_ROW_OFFSET構造での現在の行のオフセット。エラーが発生した場合、NULL

mysql_select_db()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_send_query()

問合せを送信します。oramysqlライブラリでは、この関数は非同期ではありません。問合せが実行されるまで呼出しはブロッキングされます。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_server_end()

oramysqlライブラリを終了してクリーンアップします。

戻り値

なし

mysql_server_init()

接続を作成する前にoramysqlクライアント・ライブラリを初期化します。mysql.hヘッダー・ファイルで、関数mysql_library_init()マクロはmysql_server_init()であると定義されています。この呼出しはスレッドセーフではありません。呼び出すことができるのは、1つのスレッドのみです。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_set_character_set()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_set_local_infile_default()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_set_local_infile_handler()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_set_server_option()

これは無演算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_attr_get()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_stmt_attr_set()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_stmt_bind_param()

この関数は、準備された文内のすべてのパラメータをバインドします。

戻り値

パラメータが正常にバウンドされた場合、0。エラーが発生した場合、0以外。

mysql_stmt_bind_result()

準備された文のすべてのSELECTでリストされた列のプログラム変数をバインドします。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_stmt_close()

MYSQL_STMTオブジェクトを閉じます。

戻り値

0

mysql_stmt_data_seek()

この関数は、特定の行のデータを取得しようとします。

戻り値

なし

mysql_stmt_errno()

MYSQL_STMTオブジェクトで発生した直前のエラーのエラー番号を返します。

戻り値

なし

mysql_stmt_error()

この関数は、MYSQL_STMTオブジェクトで発生した直前のエラーのエラー・メッセージを返します。

戻り値

const *charエラー・メッセージ。

mysql_stmt_execute()

この関数は、準備された文を実行します。

戻り値

文が正常に実行された場合、0。エラーが発生した場合、0以外。

mysql_stmt_fetch()

この関数は、mysql_stmt_bind_resultの呼出しによってバインドされたプログラム変数内の1つの行をフェッチします。

戻り値

1つの行が正常にフェッチされた場合、0。それ以上行/データがない場合、MYSQL_NO_DATA。データの切捨てが発生した場合、MYSQL_DATA_TRUNCATED。エラーが発生した場合、1

mysql_stmt_fetch_column()

この関数は、現在の結果セットの行から1列をフェッチします。

戻り値

値が正常にフェッチされた場合、0。エラーが発生した場合、0以外。

mysql_stmt_field_count()

MYSQL_STMTオブジェクト内のフィールドの数をフェッチします。

戻り値

エラーが発生した場合、0。それ以外の場合、MYSQL_STMTオブジェクトに関連付けられた結果セットのフィールド数。

mysql_stmt_free_result()

MYSQL_STMTオブジェクトに関連付けられた結果セットを解放します。

戻り値

0

mysql_stmt_init()

MYSQL接続オブジェクトから新しいMYSQL_STMTオブジェクトを作成します。

戻り値

成功した場合、MYSQL_STMTオブジェクト。エラーが発生した場合、NULL

mysql_stmt_insert_id()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_stmt_next_result()

この関数は、実装されていません。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_stmt_num_rows()

格納されている結果セット内の行の数を返します。格納されていない(バッファリングされていない結果セット)場合、それまでにフェッチされた行の総数を返します。

戻り値

行の数のフェッチ中にエラーが発生した場合、0。

mysql_stmt_param_count()

準備された文内のバインド・パラメータの数を返します。

戻り値

バインド・パラメータの数を返す際にエラーが発生した場合、0

mysql_stmt_param_metadata()

この関数は、MySql結果セット(MYSQL_RES *) NULLへのキャストです。

戻り値

NULL

mysql_stmt_prepare()

MYSQL_STMT内の文の実行を準備します。

戻り値

成功した場合、0。エラーが発生した場合、0以外。

mysql_stmt_reset()

MYSQL_STMT内の準備された文をリセットします。

戻り値

0

mysql_stmt_result_metadata()

MYSQL_STMTオブジェクトを介して実行されるSELECT文の結果のメタデータを返します。

戻り値

準備されたSELECT文のメタデータを表す結果セット。エラーが発生した場合、NULL

mysql_stmt_row_seek()

行の位置を探し、前の行とのオフセットを返します。

戻り値

MYSQL_ROW_OFFSET構造内の前の行とのオフセット。

mysql_stmt_row_tell()

結果セット内の現在の行の位置を返します。

戻り値

現在の行の位置。エラーが発生した場合、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_end()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

なし

mysql_thread_id()

接続のOracleセッションID(SID)を返します。これは、内部で次のSQL文を実行して取得したものです。

select SYS_CONTEXT('USERENV', 'SID') from DUAL;

このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

OracleセッションID(SID)。エラーが発生した場合、0

mysql_thread_init()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

0

mysql_thread_safe()

oramysqlライブラリはスレッドセーフであるため、この関数は常にTRUEを返します。

戻り値

TRUE

mysql_use_result()

結果セットの取得を開始します。

戻り値

エラーが発生した場合、NULL。成功した場合、有効な結果セット。

mysql_warning_count()

これは無演算APIです。このコールの結果に依存するアプリケーションは、そのアプリケーション・ロジックを変更する必要があります。

戻り値

成功した場合、0。エラーが発生した場合、0以外。