diff --git a/libraries/rte/rte_routines.lib.php b/libraries/rte/rte_routines.lib.php
index b07b598cfd..89d0bddb84 100644
--- a/libraries/rte/rte_routines.lib.php
+++ b/libraries/rte/rte_routines.lib.php
@@ -1253,34 +1253,26 @@ function PMA_RTN_handleExecute()
. "(" . implode(', ', $args) . ") "
. "AS " . $common_functions->backquote($routine['item_name']) . ";\n";
}
- // Execute the queries
- $affected = 0;
- $result = null;
+
+ // Get all the queries as one SQL statement
+ $multiple_query = implode("", $queries);
+
$outcome = true;
- foreach ($queries as $query) {
- $resource = PMA_DBI_try_query($query);
- if ($resource === false) {
- $outcome = false;
- break;
- }
- while (true) {
- if (! PMA_DBI_more_results()) {
- break;
- }
- PMA_DBI_next_result();
- }
- if (substr($query, 0, 6) == 'SELECT') {
- $result = $resource;
- } else if (substr($query, 0, 4) == 'CALL') {
- $result = $resource ? $resource : $result;
- $affected = PMA_DBI_affected_rows() - PMA_DBI_num_rows($resource);
- }
+ $affected = 0;
+
+ // Execute query
+ if (! PMA_DBI_try_multi_query($multiple_query)) {
+ $outcome = false;
}
+
// Generate output
if ($outcome) {
$message = __('Your SQL query has been executed successfully');
if ($routine['item_type'] == 'PROCEDURE') {
$message .= '
';
+
+ // TODO : message need to be modified according to the
+ // output from the routine
$message .= sprintf(
_ngettext(
'%d row affected by the last statement inside the procedure',
@@ -1295,36 +1287,70 @@ function PMA_RTN_handleExecute()
$output = '';
$output .= PMA_SQP_formatHtml(PMA_SQP_parse(implode($queries)));
$output .= '';
+
// Display results
- if ($result) {
- $output .= "