작성한 프로시저들은 데이터베이스의 프로시저 목록에 등록됩니다. 등록된 프로시저의 내용을 출력하여 확인할 수 있습니다. 프로시저의 내용을 출력할 때는 SHOW CREATE PROCEDURE 명령을 사용합니다.

| 쿼리 문법 |

SHOW CREATE PROCEDURE 프로시저명; 

22.5.1 쿼리 실습

데이터베이스의 프로시저 내용을 출력 확인해 보겠습니다.

| 예제 쿼리 |

show create procedure mem; 

| 콘솔 실습 화면 |

mysql> show create procedure mem;
+-----------+------------------------+------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode               | Create Procedure                                                                                           | character_set_client | collation_connection | Database Collation |
+-----------+------------------------+------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| mem       | NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` PROCEDURE `mem`()
BEGIN
select * from members;
select * from orders;
END | utf8                 | utf8_general_ci      | utf8_general_ci    |
+-----------+------------------------+------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)

작성한 프로시저의 내용이 출력됩니다.

22.5.2 PHP 실습

PHP 코드를 통하여 프로시저를 확인해 보도록 하겠습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

public function isProcedure($name)
{
            if ($name) {
                $queryString = "SHOW CREATE PROCEDURE $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] 프로시저명을 적어주세요.");
            }
}

예제 파일 | pro-04.php

<?php

	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	$name = "mem";
    
	if ($rowss = $db->isProcedure($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 PROCEDURE mem
tables fields = 1
0=stdClass Object ( [Procedure] => mem [sql_mode] => NO_ENGINE_SUBSTITUTION [Create Procedure] => CREATE DEFINER=`root`@`localhost` PROCEDURE `mem`(a INT) BEGIN SELECT * FROM members WHERE Id=a; END [character_set_client] => utf8 [collation_connection] => utf8_general_ci [Database Collation] => utf8_general_ci )