MySQL 저장 프로시저는 MySQL 5.0부터 추가된 새로운 기능입니다. 저장 프로시저의 장점은 주로 실행 효율성과 SQL 코드 캡슐화입니다. 특히 SQL 코드 캡슐화 기능은 특히 비즈니스 로직이 복잡할 때 더욱 그렇습니다. 이제 MySQL 저장 프로시저를 사용하면 비즈니스 로직을 저장 프로시저로 캡슐화할 수 있으며 이는 유지 관리가 쉬울 뿐만 아니라 실행 측면에서도 효율적입니다.
<?php /** * PHP操作Mysql存储过程示例 * * @author flyer0126 * @date 2011-12-23 * */ //配置数据库连接信息 $hostname = 'localhost'; $username = '******'; $password = '******'; //连接mysql数据库 @$link = mysql_connect($hostname, $username, $password) or die("Connect Error:".mysql_error()); //选择目标库 mysql_select_db("flyer0126"); //展示目标库中数据表 @$res = mysql_list_tables("flyerdb"); for ($i=0; $i<mysql_num_rows($res); $i++){ echo mysql_tablename($res, $i)."<br/>"; } //创建存储结构 mysql_query("DROP PROCEDURE IF EXISTS `my_test1`;", $link); $create_pro_sql = "CREATE PROCEDURE `my_test1`(a INT, b INT) BEGIN DECLARE c INT; IF a IS NULL THEN SET a = 0; END IF; IF b IS NULL THEN SET b = 0; END IF; SET c = a + b; SELECT c AS SUM; END;"; mysql_query($create_pro_sql, $link) or die("Query Invalid:".mysql_error()); //执行存储过程方式一 //$run_pro_sql = "CALL my_test1(1,2);"; //执行存储过程方式二 mysql_query("SET @a = 1", $link); mysql_query("SET @b = 2", $link); $run_pro_sql = "CALL my_test1(@a, @b);"; //执行存储过程 $result = mysql_query($run_pro_sql, $link) or die("Query Invalid:".mysql_error());; //获取返回值 $row = mysql_fetch_row($result); echo $row[0]; //3 //关闭连接 mysql_close($link); ?>