MySQL 5.1 unterstützt die Ausführung von
Mehrfachanweisungen, die in einem einzigen Anfrage-String
angegeben werden. Um diese Fähigkeit auf einer gegebenen
Verbindung nutzen zu können, müssen Sie die Option
CLIENT_MULTI_STATEMENTS
im Parameter
flags
der Funktion
mysql_real_connect()
angeben, wenn Sie die
Verbindung öffnen. Sie können dies jedoch mit
mysql_set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_ON)
auch für eine laufende Verbindung tun.
Nach Voreinstellung geben mysql_query()
und
mysql_real_query()
nur den ersten
Anfragestatus zurück; der Status der nachfolgenden Anfragen
kann mit mysql_more_results()
und
mysql_next_result()
verarbeitet werden.
/* Richte Serververbindung mit der Option CLIENT_MULTI_STATEMENTS ein */ mysql_real_connect(..., CLIENT_MULTI_STATEMENTS); /* Führe mehrere Anfragen aus */ 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 { /* Verarbeite alle Ergebnisse */ ... 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); /* Clientfunktion */ mysql_free_result(result); } while (!mysql_next_result(mysql));
Die Fähigkeit zu Mehrfachanweisungen kann mit
mysql_query()
oder
mysql_real_query()
genutzt werden, aber nicht
mit der Schnittstelle für vorbereitete Anweisungen. Handles
für vorbereitete Anweisungen sind so definiert, dass sie nur
mit Strings funktionieren, die lediglich eine einzelne Anweisung
enthalten.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.