PHP操作Mysql存储过程示例

时间:2011-12-24 15:47:27 54次阅读 关键词: php mysql 存储过程

注意:之所以MySQL上不像SQL Server那样使用很多存储过程主要有两个方面的原因:第一,基于MySQL开发的不管是php还是python,进行简单的运算一般没什么问题;第二,存储过程将会给数据库带来额外的压力,不符合Web性能优化的潮流。以下是作者原文:

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点主要是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,尤其是业务逻辑复杂的时候。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

/** 
 * 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_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); 

原文地址:http://flyer0126.iteye.com/blog/1323188

更多