預存程序(查詢建構器18)
資料存取層支援預存程序調用,呼叫資料庫預存程序使用下面的方法:
$resultSet = Db::query('call procedure_name'); foreach ($resultSet as $result) { }
系統會自動判斷目前查詢是否為預存程序調用,但可以使用procedure方法明確指定目前查詢為預存程序查詢,提高查詢效率。
$resultSet = Db::procedure(true) ->query('call procedure_name');
預存程序傳回的是資料集,如果你的預存程序不需要傳回任何的數據,那麼也可以使用execute方法:
Db::execute('call procedure_name');
預存程序可以支援輸入和輸出參數,以及進行參數綁定操作。
$resultSet = Db::query('call procedure_name(:in_param1,:in_param2,:out_param)', [ 'in_param1' => $param1, 'in_param2' => [$param2, PDO::PARAM_INT], 'out_param' => [$outParam, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4000], ]);
輸出參數的綁定必須額外使用PDO::PARAM_INPUT_OUTPUT,並且可以和輸入參數公用一個參數。
無論預存程序內部做了什麼操作,每次預存程序呼叫僅被當成一次查詢。