存储过程

<?php
define('CLIENT_MULTI_RESULTS', 131072);
$host='127.0.0.1';
$dbname = 'test';
$dbuser = 'root';
$dbpswd = '123456';
$conn = mysql_connect($host,$dbuser,$dbpswd,1,CLIENT_MULTI_RESULTS) or die('数据库链接失败:'.mysql_error());
mysql_select_db($dbname);
mysql_query("DROP PROCEDURE IF EXISTS `my_test1`;",$conn);
$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,$conn) or die("语句错误:".mysql_error());
mysql_query("SET @a = 1",$conn);
mysql_query("SET @b = 2",$conn);
$run_pro_sql = "CALL my_test1(@a,@b);";

$result = mysql_query($run_pro_sql,$conn) or die("语句错误:".mysql_error());

$row = mysql_fetch_row($result);

echo $row[0];

mysql_close($conn);


?>


CLIENT_MULTI_RESULTS

通知服务器客户端可以处理由多语句或者存储过程执行生成的多结果集。当打开CLIENT_MULTI_STATEMENTS时,这个标志自动的被打开。可以在本表后查看更多关于该标志位的信息


果打开了 CLIENT_MULTI_STATEMENTS或CLIENT_MULTI_RESULTS,你必须对每一个mysql_query()或者mysql_real_query()的调用结果通过一个循环来处理,在这个循环中,调用mysql_next_result()来决定(发现)是否有更多的结果,如Section 20.9.12, “C API Support for Multiple Statement Execution”



你可能感兴趣的:(存储过程)