MySQL 存儲過程是從 MySQL 5.0 開始增加的新功能。存儲過程的優(yōu)點主要是執(zhí)行效率和SQL 代碼封裝。特別是 SQL 代碼封裝功能,尤其是業(yè)務(wù)邏輯復(fù)雜的時候,F(xiàn)在有了 MySQL 存儲過程,業(yè)務(wù)邏輯可以封裝存儲過程中,這樣不僅容易維護,而且執(zhí)行效率也高。
Php代碼
1.<?php
2./**
3. * PHP操作Mysql存儲過程示例
4. *
5. * @author flyer0126
6. * @date 2011-12-23
7. *
8. */
9.
10.//配置數(shù)據(jù)庫連接信息
11.$hostname = 'localhost';
12.$username = '******';
13.$password = '******';
14.
15.//連接mysql數(shù)據(jù)庫
16.@$link = mysql_connect($hostname, $username, $password) or die("Connect Error:".mysql_error());
17.
18.//選擇目標(biāo)庫
19.mysql_select_db("flyer0126");
20.
21.//展示目標(biāo)庫中數(shù)據(jù)表
22.@$res = mysql_list_tables("flyerdb");
23.for ($i=0; $i<mysql_num_rows($res); $i++){
24. echo mysql_tablename($res, $i)."<br/>";
25.}
26.
27.//創(chuàng)建存儲結(jié)構(gòu)
28.mysql_query("DROP PROCEDURE IF EXISTS `my_test1`;", $link);
29.$create_pro_sql = "CREATE PROCEDURE `my_test1`(a INT, b INT)
30. BEGIN
31. DECLARE c INT;
32. IF a IS NULL THEN SET a = 0;
33. END IF;
34. IF b IS NULL THEN SET b = 0;
35. END IF;
36. SET c = a + b;
37. SELECT c AS SUM;
38. END;";
39.
40.mysql_query($create_pro_sql, $link) or die("Query Invalid:".mysql_error());
41.
42.//執(zhí)行存儲過程方式一
43.//$run_pro_sql = "CALL my_test1(1,2);";
44.
45.//執(zhí)行存儲過程方式二
46.mysql_query("SET @a = 1", $link);
47.mysql_query("SET @b = 2", $link);
48.$run_pro_sql = "CALL my_test1(@a, @b);";
49.
50.//執(zhí)行存儲過程
51.$result = mysql_query($run_pro_sql, $link) or die("Query Invalid:".mysql_error());;