預存程序(查詢建構器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,並且可以和輸入參數公用一個參數。

無論預存程序內部做了什麼操作,每次預存程序呼叫僅被當成一次查詢。