MySQL は、バージョン 4.1 から 1
つのクエリ文字列で指定された複数ステートメントの実行をサポートします。接続でこの機能を使用するには、接続をオープンするときに
mysql_real_connect()
のフラグパラメータで
CLIENT_MULTI_STATEMENTS
オプションを指定する必要があります。このオプションは、mysql_set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_ON)
を呼び出すことで、接続に対して設定することもできます。
デフォルトでは、mysql_query()
および mysql_real_query()
は最初のクエリのステータスだけを返します。その後のクエリのステータスは
mysql_more_results()
および
mysql_next_result()
を使用して処理できます。
/* Connect to server with option CLIENT_MULTI_STATEMENTS */ mysql_real_connect(..., CLIENT_MULTI_STATEMENTS); /* Now execute multiple queries */ mysql_query(mysql,"DROP TABLE IF EXISTS test_table;\ CREATE TABLE test_table(id INT);\ INSERT INTO test_table VALUES(10);\ UPDATE test_table SET id=20 WHERE id=10;\ SELECT * FROM test_table;\ DROP TABLE test_table"; do { /* Process all results */ ... printf("total affected rows: %lld", mysql_affected_rows(mysql)); ... if (!(result= mysql_store_result(mysql))) { printf(stderr, "Got fatal error processing query\n"); exit(1); } process_result_set(result); /* client function */ mysql_free_result(result); } while (!mysql_next_result(mysql));
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.