存儲過程procedure
存儲過程,其本質還是函數——但其規定:不能有返回值;
定義形式:
說明:
1,in:用於設定該變量是用來“接收實參數據”的,即“傳入”;默認不寫,就是in
2,out:用於設定該變量是用來“存儲存儲過程中的數據”的,即“傳出”,即函數中必須對它賦值;
3,inout:是in和out的結合,具有雙向作用;
4,對於,out和inout設定,對應的實參,就“必須”是一個變量,因為該變量是用於“接收傳出數據”;
調用存儲過程:
call 存儲過程名 (實參1,實參2,.... )
它應該是在“非編程環境中”調用,即執行增刪改查的場景下;
舉例1:
#創建一個存儲過程:
#該存儲過程的目標是:將3個數據寫入到表tab_int;
#並返回該表的第一個字段的前3大值的行
調用:
舉例2(使用in,out,inout):
下面使用正確調用方法:
刪除存儲過程:
drop procedure 存儲過程名;
在php中使用存儲函數或存儲過程的示意
<php
//調用存儲函數:
$v1 = $_POST[‘a’];
$v2 = $_POST[‘b’];
$sql = “insert into tab1 (id, f2, f3) values ( null, now(), func1($v1 , $v2 ) )”;
$result = mysql_query($sql);
//調用存儲過程:
$v1 = $_POST[‘username’];
$v2 = $_POST[‘pass’];
$v3 = $_POST[‘age’];
$sql = “ call insert_user($v1, $v2, $v3 ); ”; //insert_user()是一個存儲過程,帶3個參數,會將該3個參數數據寫入(insert)某個表中。
$result = mysql_query();
另一個使用存儲過程返回結果集的例子:
$id = $_GET[‘id’];
$sql = “call Get_User_Info( $id ) “; //Get_User_Info()是一個存儲過程,其中會返回某個指定id的用戶信息
$result = mysql_query($sql); //這里得到的就是“結果集”了
?>