diff --git a/libraries/db_routines.inc.php b/libraries/db_routines.inc.php new file mode 100644 index 000000000..ca6d11c18 --- /dev/null +++ b/libraries/db_routines.inc.php @@ -0,0 +1,72 @@ += 50002 ) { + $url_query .= '&goto=db_structure.php'; + + $routines = PMA_DBI_fetch_result('SELECT SPECIFIC_NAME,ROUTINE_NAME,ROUTINE_TYPE,DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA= \'' . PMA_sqlAddslashes($db,true) . '\';'); + + if ($routines) { + echo ''; + echo sprintf(' + + + + + + + ', + $strName, + $strType, + $strRoutineReturnType); + $ct=0; + $delimiter = '//'; + foreach ($routines as $routine) { + $drop_and_create = '\'DROP ' . $routine['ROUTINE_TYPE'] . ' ' . PMA_backquote($routine['SPECIFIC_NAME']) . $delimiter . "\n" + . 'CREATE ' . $routine['ROUTINE_TYPE'] . ' ' . PMA_backquote($routine['SPECIFIC_NAME']) . '()' . "\n" . '\''; + + $sql = sprintf('SELECT CONCAT(' . $drop_and_create . ',ROUTINE_DEFINITION,\'\n//\') AS DEFINITION + FROM information_schema.ROUTINES + WHERE SPECIFIC_NAME=\'%s\'', + $routine['SPECIFIC_NAME']); + $definition = PMA_DBI_fetch_value($sql); + + if ($routine['ROUTINE_TYPE'] == 'PROCEDURE') { + $sqlUseProc = 'CALL ' . $routine['SPECIFIC_NAME'] . '()'; + } else { + $sqlUseProc = 'SELECT ' . $routine['SPECIFIC_NAME'] . '()'; + /* this won't get us far: to really use the function + i'd need to know how many parameters the function needs and then create + something to ask for them. As i don't see this directly in + the table i am afraid that requires parsing the ROUTINE_DEFINITION + and i don't really need that now so i simply don't offer + a method for running the function*/ + } + if ($routine['ROUTINE_TYPE'] == 'PROCEDURE') { + $sqlDropProc = 'DROP PROCEDURE ' . $routine['SPECIFIC_NAME']; + } else { + $sqlDropProc = 'DROP FUNCTION ' . $routine['SPECIFIC_NAME']; + } + echo sprintf(' + + + + + + + ', + ($ct%2 == 0) ? 'even' : 'odd', + $routine['ROUTINE_NAME'], + ! empty($definition) ? '' . $titles['Structure'] . '' : ' ', + $routine['ROUTINE_TYPE'] == 'PROCEDURE' ? '' . $titles['Browse'] . '' : ' ', + '' . $titles['Drop'] . '', + $routine['ROUTINE_TYPE'], + $routine['DTD_IDENTIFIER']); + $ct++; + } + echo '
%s   %s%s
%s%s%s%s%s%s
'; + } +} +?>