함수 확인
사용자 정의로 저장된 함수들은 데이터베이스 시스템에 저장됩니다. 저장된 함수들은 재사용이 가능합니다. 사용자 정의된 함수의 내용들을 SHOW CREATE FUNCTION 명령 을 통하여 확인할 수 있습니다.
| 쿼리 문법 |
SHOW CREATE FUNCTION 함수명;
25.4.1 쿼리 실습
작성한 사용자 함수의 내용을 확인해 보도록 합니다.
| 콘솔 실습 화면 |
mysql> show create function test;
+----------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Function | sql_mode | Create Function | character_set_client | collation_connection | Database Collation |
+----------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| test | NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` FUNCTION `test`(a INT) RETURNS double
BEGIN
DECLARE s DOUBLE;
SELECT a * a INTO s;
RETURN s;
END | utf8 | utf8_general_ci | utf8_general_ci |
+----------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
25.4.2 PHP 실습
PHP 코드를 통하여 사용자 함수를 확인해 보는 메서드를 만들어 봅니다.
| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.
public function isFunction($name)
{
if ($name) {
$queryString = "SHOW CREATE FUNCTION $name";
if ($result = mysqli_query($this->dbcon, $queryString)) {
$this->msgEcho("쿼리성공] ".$queryString);
$rowss = "";
$row_cnt = mysqli_num_rows($result);
for ($i=0; $i<$row_cnt; $i++) {
$rowss[$i] = mysqli_fetch_object($result);
}
$result->free();
return $rowss;
} else {
$this->msgEcho("Error] ".$queryString);
}
} else {
$this->msgEcho("Error] 함수명을 적어주세요.");
}
}
예제 파일 | func-100.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
$name = "test";
if ($rowss = $db->isFunction($name)) {
echo "tables fields = ". count($rowss) . "<br>";
for ($i=0;$i<count($rowss);$i++) {
echo $i."=";
print_r($rowss[$i]);
echo "<br>";
}
}
?>
화면 출력
mysql connected!
쿼리성공] SHOW CREATE FUNCTION test
tables fields = 1
0=stdClass Object ( [Function] => test [sql_mode] => NO_ENGINE_SUBSTITUTION [Create Function] => CREATE DEFINER=`root`@`localhost` FUNCTION `test`(a INT) RETURNS double BEGIN DECLARE s DOUBLE; SELECT a * a INTO s; RETURN s; END [character_set_client] => utf8 [collation_connection] => utf8_general_ci [Database Collation] => utf8_general_ci )